利用带节点的头插法建立链表不需要返回head么?!
#include <stdio.h>#include <stdlib.h>
struct Student
{
char No[11];
char Name[11];
int Age;
};
struct Node
{
struct Student Stu;
struct Node *Next;
};
void CreateList(struct Node *Head);
void Output(struct Node *Head);
int main(void)
{
/*********Found************/
struct Node *Head;
Head = (struct Node *)malloc(sizeof(struct Node));
Head->Next = NULL;
CreateList(Head);
Output(Head);
return 0;
}
void CreateList(struct Node *Head)
{
int i = 0;
char tmp[10];
do
{
struct Node *tt;
tt = (struct Node*)malloc(sizeof(struct Node)); /居然没有返回值/
printf("请输入学生的学号:");
gets(tt->Stu.No);
printf("请输入学生的姓名:");
gets(tt->Stu.Name);
printf("请输入学生的年龄:");
gets(tmp);
tt->Stu.Age = atoi(tmp);
tt->Next = Head->Next;
/*********Found************/
Head->next= tt;
printf("是否继续添加节点?(Y/N)");
gets(tmp);
} while (tmp[0]=='Y' || tmp[0]=='y');
}
void Output(struct Node *Head)
{
struct Node *p;
p = Head->Next;
printf("全部学生信息如下:\n");
while (p)
{
printf("%15s%15s%10d\n", p->Stu.No, p->Stu.Name, p->Stu.Age);
p = p->Next;
}
}
大家可以看看这个简单的建立链表(头插法);
他没有返回head 直接就用了···但是据我所了解的都要返回head的 不然在子函数运行后 都要释放啊 但是这个程序运行确实可以的··