回 帖 发 新 帖 刷新版面

主题:建一个双向链表

#include<stdio.h>
#include<stdlib.h>

struct list{
       int data;
       struct list *next;
       struct list *prior;
};
       
int main()
{
    struct list *p,*q;
    p=(struct list *)malloc(sizeof(struct list));
    p->prior=NULL;
    p->next=NULL;
    q=(struct list *)malloc(sizeof(struct list));
    q=NULL;
    int i,m;
    printf("enter:\n");
    for(i=0;i<=5;i++)
    {
         p->next=(struct list *)malloc(sizeof(struct list));
         p->prior=(struct list *)malloc(sizeof(struct list));
         scanf("%d",&m);            
         p->data=m; 
         if(i=5)
         {
             p->next=NULL;
             p->prior=q;
             p->prior->next=NULL;
         }
         else 
         {
              q=p;
              p->next->prior=q;
              p=p->next;
              p->prior=q;
         }
    }
    while(p)
    {
        printf("%d->",p->data);
        p=p->prior;
    }
    return 0;
}
        
做双向链表有点头晕,不知道这程序哪里出错了,敬请各位老大指教                          
    

回复列表 (共3个回复)

沙发

if(i=5)

板凳

没从根本上解决问题

3 楼

#include<stdio.h>
#include<stdlib.h>

struct list{
       int data;
       struct list *next;
       struct list *prior;
};
       
int main()
{
    struct list *p,*q,*head;
    head=(struct list *)malloc(sizeof(struct list));
    head->prior=NULL;
    head->next=NULL;
    q=head;
    int i,m;
    printf("enter:\n");
    for(i=0;i<=3;i++)
    {
         p=(struct list *)malloc(sizeof(struct list));
         scanf("%d",&m);
         q->data=m; 
         if(i==3)
         {
             break;
         }
         else
         {            
             q->next=p;
             p->prior=q;
             p->next=NULL;
             q=p;
         }
    }
    while(q)
    {
        printf("%d->",q->data);
        q=q->prior;
    }
    system("pause");
    return 0;
}
    
我会了

我来回复

您尚未登录,请登录后再回复。点此登录或注册