当前位置: 代码迷 >> C语言 >> 我写的双向链表的创建程序有错,请指教!
  详细解决方案

我写的双向链表的创建程序有错,请指教!

热度:204   发布时间:2006-10-20 16:11:39.0
我写的双向链表的创建程序有错,请指教!

#include"stdio.h"
#include"malloc.h"
typedef char DataType;
typedef struct node
{
DataType data;
struct node *next,*prior;
}dlistnode;
typedef dlistnode *dlinklist;

dlinklist createdlist()
{
dlinklist head;
dlistnode *p;
DataType ch;
head=NULL;
while((ch=getchar())!='\n')
{
p=(dlistnode *)malloc(sizeof(dlistnode));
p->data=ch;
p->next=head;
head=p;
p->next->prior=p; //错误可能就是这一句,我不知道原因!
}
return head;
}

void Print(dlinklist L)
{
dlistnode *p;
p=L;
while(p)
{
printf("%c",p->data);
p=p->next;
}
}

void main(void)
{
dlinklist dlist1;
dlist1=createdlist();
Print(dlist1);
}

搜索更多相关的解决方案: 链表  dlistnode  DataType  dlinklist  

----------------解决方案--------------------------------------------------------
链表的头结点不能存储内容!!!

也就是说p-〉data不能赋值!!!
----------------解决方案--------------------------------------------------------
以下是引用yangchuan545在2006-10-20 16:11:39的发言:

#include"stdio.h"
#include"malloc.h"
typedef char DataType;
typedef struct node
{
DataType data;
struct node *next,*prior;
}dlistnode;
typedef dlistnode *dlinklist;

dlinklist createdlist()
{
dlinklist head;
dlistnode *p;
DataType ch;
head=NULL;//没有分配空间
head->next=NULL;
while((ch=getchar())!='\n')
{
p=(dlistnode *)malloc(sizeof(dlistnode));
p->data=ch;
/*p->next=head;
head=p;
p->next->prior=p; //错误可能就是这一句,我不知道原因!*/
head->next-prior=p; //头插法建立双链表
p->next=head->next;
head->next=p;
p->prior=head;

}
return head;
}

void Print(dlinklist L)
{
dlistnode *p;
p=L;
while(p)
{
printf("%c",p->data);
p=p->next;
}
}

void main(void)
{
dlinklist dlist1;
dlist1=createdlist();
Print(dlist1);
}


----------------解决方案--------------------------------------------------------
To:nuciewth

运行错误...
----------------解决方案--------------------------------------------------------
[QUOTE]

我写的双向链表的创建程序有错,请指教! #include"stdio.h"
#include"malloc.h"
typedef char DataType;
typedef struct node
{
DataType data;
struct node *next,*prior;
}dlistnode;
typedef dlistnode *dlinklist;

dlinklist createdlist()
{
dlinklist head;
dlistnode *p;
DataType ch;
head=NULL;
while((ch=getchar())!='\n')
{
p=(dlistnode *)malloc(sizeof(dlistnode));
p->data=ch;
、、 p->next=head;
、、 head=p;
、、 p->next->prior=p; //错误可能就是这一句,我不知道原因!
if(head == NULL) { 、、看这样行不行

p->next = head;
head = p;

}
else {
p->next=head;
head->prior = p;
head=p;
}
}
return head;
}

void Print(dlinklist L)
{
dlistnode *p;
p=L;
while(p)
{
printf("%c",p->data);
p=p->next;
}
}

void main(void)
{
dlinklist dlist1;
dlist1=createdlist();
Print(dlist1);

[/QUOTE]
----------------解决方案--------------------------------------------------------
上面蓝色是我写的,还不太懂怎么操作这个“引用”选项,见谅
----------------解决方案--------------------------------------------------------
以下是引用longerhe在2006-10-21 14:09:04的发言:
To:nuciewth

运行错误...

你把楼主的程序改了.?
----------------解决方案--------------------------------------------------------

  相关解决方案