几个c语言链表问题

[复制链接]
查看11 | 回复1 | 2011-3-19 06:19:23 | 显示全部楼层 |阅读模式
typedef struct student
{
int date;
struct student *next
}node;
node *create(void)
{
node *p,*s, *head;
int a;
int cycle=1;
head=(node*)malloc(sizeof(node));
while(cycle)
{
此处输出一句话;
scanf(\"%d\",a);
if(x!=0){
s=(node*)malloc(sizof(node));
s-date=x;
p-next=s;
p=s;
}
else{
cycle=0;
}
}
Head=head-next;
p-next=NULL;
return(head);
}
create函数 类型标识符怎么是一个怎么是个结构体变量啊
讲下那个malloc函数后面不应该是个无符号整形变量么?
从哪到哪是链表啊…整个懵了…大侠指教…
回复

使用道具 举报

千问 | 2011-3-19 06:19:23 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">如有不懂,HI我

create函数 类型标识符怎么是一个怎么是个结构体变量啊?

答:typedef知道吧?
举个例子typedef int AAA;他的意思就是让AAA等价于int,也就是说给int重新起了一个外号
所以int i;等价于AAA i;明白了吧

再仔细看看这个结构体
typedef struct student
{
int date;
struct student *next
}node;
node不是结构体变量,是你命名的结构体类型,所以才可以用它定义变量。

讲下那个malloc函数后面不应该是个无符号整形变量么?

答:sizeof(node)是测量这个结构体占有多有字节数,从而就知道要分配多少内存。而这个无符号整型变量就是这个sizeof测出来的字节数。

再说一句,先把代码抄对,好吧,这样有助于学习链式结构

这个代码你自己调式下吧(有输入输出)

#includestdio.h
#includestdlib.h

//定义结构体
typedef struct student
{
int date;
struct student *next;
}node;//定义结构体类型

node *create(void)//创建单链表函数//这个是指针函数,类型是结构体类型
{
int x;//输入数据
int cycle = 1;//控制循环变量
node *p = NULL;//保留指针
node *s = NULL;//开辟指针
node *head = NULL;//头指针

head = (node *) malloc (sizeof(node));//申请内存空间
if (head == NULL)//由于用了malloc函数,加一个判断是否申请到内存空间
{
printf(\"内存分配失败!\\n\");
exit(0);
}
head-next = NULL;//建立头结点

p = head;//首先让指针p指向头结点

while (cycle)
{
printf(\"请输入值:\");
scanf(\"%d\",//输入数据

if (x != 0)//当数据不为0时
{
s = (node *) malloc (sizeof(node));//开辟一块新的空间,也就是一个结点
if (s == NULL)
{

printf(\"内存分配失败!\\n\");

exit(0);
}
s-date = x;//给date赋值
p-next = s;//让指针p保存结点里指针next指向这个新开辟的空间地址
p = s;//p保存这个结点s
}
else//假如x = 0
{
cycle = 0;//这cycle = 0循环结束,也就是说,不再进行输入数据
}
}
p-next = NULL;//让最后一个结点里的next指针指向NULL

return(head);//返回头指针,而这个指针的类型是结构体类型
}

void output(node *head)//输出函数
{
node *p = head-next;//从头结点的下个节点开始输出

while (p != NULL)
{
printf(\"]\", p-date);//输出
p = p-next;//移向下一个结点
}
}

void main(void)
{
node *head = create();//创建链表

output(head);//输出链表

printf(\"\\n\");
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行