该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include //malloc头文件
struct Student //定义结构体
{
int num;
struct Student *next; //指向下一个数据节点的指针
};
int n;
struct Student *creat() //定义建立链表的函数
{
n=0;
struct Student *p1,*p2,*head;
p1=p2=(struct Student *)malloc(sizeof(struct Student)); //malloc分配动态内存
scanf("%d",&p1->num); //sizeof判断数据类型或者表达式长度
head=NULL; //分配头指针为空
while(p1->num!=0)
{
++n;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(sizeof(struct Student)); //开辟新的动态内存
scanf("%d",&p1->num);
};
p2->next=NULL;
return (head); //返回链表头地址
};
void print(struct Student *head) //输出函数
{
struct Student *p;
printf("数字链表内容为:\n");
p=head;
if(head!=NULL)
{
do
{
printf("%d\n",p->num);
p=p->next;
}while(p!=NULL);
}
}
int main() //主函数
{
struct Student *pt;
pt=creat(); //调用建立链表的函数
print(pt); //调用输出链表的函数
return 0;
};