一、创建链表
1.给出链表长度n
需要创建三个节点(必须三个节点,两个不行),头尾新节点
头节点用于返回,尾节点用于连接新节点
Lnode *CreateList(int n)
{
Lnode *H,*p,*tail;
int i;
for(i=0;i<n;i++)
{
p=(Lnode*)malloc(sizeof(Lnode));
scanf("%d",&p->data);
if(i==0)H=p;
else tail->next=p;
tail=p;
}
tail->next=NULL;
return H;
}
2.没有给链表长度
先开辟节点,再判断,其它基本同第一种
struct Student *creat(void){
//返回值为student的地址,并且无参数
struct Student *head,*p,*tail;
int n=0;
p=tail=( struct Student*)malloc(LEN);//p为新节点,tail为最后一个节点
scanf("%d",&p->num);
head=NULL;
while(p->num!=0)
{
n=n+1;
if(n==1)head=p;//地址赋值,连接两个节点
else tail->next=p;
tail=p;//当前节点往后推一位
p=( struct Student*)malloc(LEN);//分配节点
scanf("%d",&p->num);
}
tail->next=NULL; return (head);
}
3.头插法
Lnode *CreateList0(int n)
{
Lnode *H=NULL,*p;
int i;
H=(Lnode*)malloc(sizeof(Lnode));
H->next=NULL;
H