注册 登录
编程论坛 C++教室

双链表问题

zd123 发布于 2009-09-10 20:29, 544 次点击
//  创建+打印双链表

//  问题在下面

#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"
#define SIZE sizeof(snode)
typedef struct student
{
    int num;
    struct student *next;
    struct student *prior;
}snode;
snode *create1();
                         //创建链表
void print(snode *head);                    //打印链表
void main(void)
{

    snode *head1;
        printf("\n链表为:\n");
    head1=create1();
        printf("\n链表为:\n");
   

    print(head1);
   

}
snode *create1()
{
    snode *head,*r,*s;
    FILE *fp;
    int num1;
    head=(snode *)malloc(sizeof(SIZE));
    head->next=head->prior=NULL;
    r=head;
    fp=fopen("D:\\qq.txt","r");
    while(!feof(fp))
    {
        fscanf(fp,"%d",&num1);                        //
        s=(snode *)malloc(sizeof(SIZE));
        s->num=num1;s->next=NULL;s->prior=r;
        r->next=s;
        r=s;
    }
    return head;
}

void print(snode *head)
{
    snode *p;
    p=head->next;                 //带头结点
    while(p!=NULL)                          
    {                               //  输出时,最后一个元素重复了,为什么啊???
        printf("%6d",p->num);          //怎么是p->next !=NULL   呢??????????  应该是p!=NULL啊!!!!!!         
        p=p->next;
    }
}
3 回复
#2
fengyufeng2009-09-10 23:34
程序有问题吗?没吧,能正常输出.
#3
雪花神剑2009-09-11 22:47
我试的时候也是最后一个重复了
#4
newCpp2009-09-12 13:06
链表是啥玩意啊!
谁帮忙解释一下啊!
1