哪位大神可以帮我解析一下下别的函数,在关键句(可以的话,每句都要)后边写上注释语,谢谢了

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct aa
{
int data;
struct aa *next;
}NODE;
NODE *Creatlink(int n,int m)
{
NODE *h=NULL,*p,*s;
int i;
s=(NODE*)malloc(sizeof(NODE));
h=s;
p=s;
for(i=1;i<n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%(m-1);
s->next=p->next;
p->next=s;
p=p->next;
}
s->next=NULL;
return p;
}
void outlink(NODE *h)
{
NODE *p;
p=h->next;
printf("\n\nTHe LIST :");
while(p)
{
printf("->%d",p->data);
p=p->next;
}
printf("\n");
}
void main()
{
NODE *head;
head=Creatlink(8,22);
outlink(head);
}
功能:创建带头节点的单向链表,并为各节点数据域赋0到m-1的值。(节点,单向链表,节点数据域是什么呀?)

Creatlink函数中的返回指针错了,应该返回h而不是返回p,所以语句:

return p; 应改为 return h;追问

嗯,答案和您的一样,麻烦您把这个函数解释一下,好些符号和名词我都不太懂,比如->,节点,单向链表,节点数据域,p=h->next;等,C语言最基本的就不用解释了。
麻烦您把我的函数复制一下,在每句后面写上一下注释,这是个计算机二级改错题

追答

NODE *Creatlink(int n,int m)
{
NODE *h=NULL,*p,*s;
int i;
s=(NODE*)malloc(sizeof(NODE)); //创建一个结点s(即为新结点分配内存)
h=s; // 结点s作为头结点
p=s; //使指针p指向新结点将要插入的位置
for(i=1;idata=rand()%(m-1); //将0到m-2的一个随机整数存入结点的数据域
s->next=p->next; //(1)将p结点之后的结点链接到s结点之后
p->next=s; //(2)将s结点链接到p结点之后
//(1)(2)完成将新结点s插入到链表中p结点之后
p=p->next; //使指针p指向新结点将要插入的位置
}
s->next=NULL; //使链表尾结点的后继结点为NULL
return h; // 返回指向头结点的指针
}

温馨提示:答案为网友推荐,仅供参考
相似回答