请注释以下c语言程序,多谢

2025-02-27 11:50:11
推荐回答(2个)
回答1:

#include
struct list//构建链表结构体:数据和指针
{
char data;
struct list *next;
};
struct list *creat()
{
struct list *h,*p,*q; //定义结构体指针
char ch;
h=(struct list*)malloc(sizeof(struct list)); //为h指针申请空间
p=q=h; //初始化p和q指针
ch=getchar(); //接收输入的字符
while(ch!='?') //只有在接收到的字符为 '?' 时才停止接收
{
p=(struct list *)malloc(sizeof(struct list)); //为p指针申请空间
p->data=ch; //p指向的结构体的数据成员赋值为ch
q->next=p; //q指向的结构体的指针成员指向p,即把p链接到该链表尾部
q=p; //q赋值为p,保证q始终是该链表的最后一个节点,p是每次新增的链表节点
ch=getchar(); //继续接收字符
}
p->next='\0'; //清空p指向的结构体指针
return h; //返回h指针,这里h即为整个链表的头节点,有了头结点即可以获得整个链表的数据
}

回答2:

#include
struct list//构建链表结构体:数据和指针
{
char data;//数据成员
struct list *next;//指向下一个节点的指针
};
struct list *creat()//创建链表
{
struct list *h,*p,*q; //定义结构体指针
char ch;
h=(struct list*)malloc(sizeof(struct list)); //为h指针申请空间
p=q=h; //初始化p和q指针
ch=getchar(); //接收输入的字符
while(ch!='?') //只有在接收到的字符为 '?' 时才停止接收
{
p=(struct list *)malloc(sizeof(struct list)); //为p指针申请空间
p->data=ch; //p指向的结构体的数据成员赋值为ch
q->next=p; //q指向的结构体的指针成员指向p,即把p链接到该链表尾部
q=p; //q赋值为p,保证q始终是该链表的最后一个节点,p是每次新增的链表节点
ch=getchar(); //继续接收字符
}
p->next='\0'; //清空p指向的结构体指针
return h; //返回h指针,这里h即为整个链表的头节点,有了头结点即可以获得整个链表的数据
}