文件 DoubleList.h

问题描述:

文件 DoubleList.h
typedef struct DulNode{
int data;
struct DulNode *prior;
struct DulNode *next;
}DulNode;
文件 DoubleList.c
Head *InitLink(){
printf("请输入节点的值,0为结束标志:");
Head *p;
DulNode *q,*s;
int elem;
p = (struct Head *)malloc(sizeof(Head));
p->head = NULL;p->lenght = 0;
q=(DulNode*)malloc(sizeof(DulNode));
scanf("%d",&elem);
while(elem){
s =(DulNode*)malloc(sizeof(DulNode));
s->data = elem;
if(p->head == NULL){
p->head = s;
p->lenght+=1;
s->prior = s;
s->next = s;
q = s;
}
else{
q->next = s;
s->prior = q;
q->prior = s;
s->next = q;
p->lenght+=1;
}
scanf("%d",&elem);
}
free(q);
return p;
}
typedef struct Head{
int lenght;
struct DulNode *head;
}Head;
请问为什么会报 'Head' : illegal use of this type as an expression错误.哪位大侠能帮帮忙.小弟非常感激.
1个回答 分类:综合 2014-11-09

问题解答:

我来补答
lude "stdlib.h"
/*加入这个头文件原因
函数名称:malloc
函数原型:void * malloc(unsigned size);
函数功能:分配size字节的存储区
函数返回:所分配的内存区地址,如果内存不够,返回0
参数说明:
所属文件:<stdlib.h>
*/
#define NULL 0
typedef struct Lnode{
int data;
struct Lnode* next;
}Lnode;
int n,x;
Lnode* creat()
{
Lnode* head;
Lnode* p1;
n=5;x=1;
p1=(Lnode*)malloc(sizeof(Lnode));
head=p1;
while(n>1)
{
p1->data=x++;
p1->next=(Lnode*)malloc(sizeof(Lnode));
p1=p1->next;
n--;
}
//此时p1是最后一个新建的节点,故需将值赋给其值域.
p1->data=x;
p1->next=NULL;
return head;
}
void print(Lnode* p3) //最好不要老是用head,以防混淆
{
printf("Now,these list is:");
Lnode* p2;
p2=p3;
while(p2!=NULL) //应该判断的是当前指针是否为空.
{
printf("%d",p2->data);
p2=p2->next;
}
}
void main()
{
Lnode* p3;
p3=creat();
print(p3);
}
这样程序的输出结果是:12345.
我想这才是楼主想要的结果吧.
在下对楼主的建议有:
1 学习指针时在稿纸上分析节点里面的数据情况,特别是头指针和最后一个节点的情况,防止出现指针断节,或存在空数据.
2 编程习惯需要稍微改善,尽量规范一些编程.
在下第一次为人解答问题,如有回答不妥的地方,忘见谅!
 
 
展开全文阅读
剩余:2000
上一页:周五
下一页:责任的事实论据