求达人,运行结果不出自己要的结果
#include<stdio.h> #include<stdlib.h>
typedef struct stu
{
int i;
struct stu *next;
}stu;
typedef struct head
{
stu *he;
int size;
}head;
head *p;
stu *p1;
int kaipijiedian(head *p);
int kaipishuju(stu *p1);
int lianjieshuju(head *p,stu *p1);
int print(head *P);
int kaipijiedian(head *p)
{
p=(head*)malloc(sizeof(head));
if(p==NULL)
{
printf("shengqingshibai\n");
return (NULL);
}
(*p).he=NULL;
(*p).size=0;
printf("kaipijiedianchenggong\n");
}
int kaipishuju(stu *p1)
{
p1=(stu*)malloc(sizeof(stu));
if(p1==NULL)
{
printf("shengqingshibai\n");
return (NULL);
}
printf("qingshurushuju:");
scanf("%d",&((*p1).i));
(*p1).next=NULL;
}
int lianjieshuju(head *p,stu *p1)
{ stu *p2;
p2=(*p).he;
if(p2==NULL)
{
(*p).he=p1;
(*p).size=(*p).size+1;
}
else
{
while((*p2).next!=NULL)
p2=(*p2).next;
(*p2).next=p1;
(*p).size=(*p).size+1;
}
printf("%d\n",(*p).size);
}
int print(head *P)
{
stu *p3 ;
p3=(*p).he;
while(p3!=NULL)
{
printf("%d\n",(*p3).i);
p3=(*p3).next;
}
}
main()
{
kaipijiedian(p);
kaipishuju(p1);
lianjieshuju(p,p1);
print(p);
}
程序目的
用一个head的结构体保存 链表的头地址,和链表的长度
stu结构体是保存数据的
函数
kaipijiedian(p) 开辟一个单元用于存放head结构体p
kaipishuju(p1) 开辟一个单元用于存放P1 并给(*P).i赋值
lianjieshuju(p,p1) 作用是 讲p.next=P1实现 形成链表,并记录链表长度
print(p) 是打印出链表里的i值