#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);
}
----------------解决方案--------------------------------------------------------
链表的头结点不能存储内容!!!
也就是说p-〉data不能赋值!!!
----------------解决方案--------------------------------------------------------
#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);
----------------解决方案--------------------------------------------------------
上面蓝色是我写的,还不太懂怎么操作这个“引用”选项,见谅
----------------解决方案--------------------------------------------------------
To:nuciewth
运行错误...
你把楼主的程序改了.?
----------------解决方案--------------------------------------------------------