#include <stdio.h>
#include <stdlib.h>
typedef int elemtype;
typedef struct lnode{
elemtype data;
struct lnode *next;
}lnode,*linklist;
void list_head_insert(lnode*&l){
l=(linklist)malloc(sizeof(lnode));
l->next= NULL;
elemtype x;
scanf("%d",&x);
lnode *s;
while(x!=9999){
s=(linklist)malloc(sizeof(lnode));
s->data=x;
s->next=l->next;
l->next=s;
scanf("%d",&x);
}
}
void print_list(linklist l){
l=l->next;
while(l!=NULL){
printf("%3d",l->data);
l=l->next;
}
printf("\n");
}
int main(){
linklist l;
list_head_insert(l);
print_list(l);
return 0;
}//头插法链表 l=(linklist)malloc(sizeof(lnode))
l->next=NULL;NULL必须大写
l=l->next;
while(l!=null){
printf("%3d",l->data);
l=l->next;
//尾插法
#include <stdio.h>
#include <stdlib.h>
typedef int elemtype;
typedef struct lnode{
elemtype data;
lnode *next;
}lnode,*linklist;
void print_list(linklist l){
l=l->next;
while(l1!=NULL){
printf("%3d",l->data);
l=l->next;
}
}
void list_tail_insert(lnode*&l){
l=(linklist)malloc(sizeof(lnode)) ;
l->next=NULL;
elemtype x;
scanf("%d",&x);
lnode *s,*r=l;
while(x!=9999){
s=(linklist)malloc(sizeof(lnode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
}
int main(){
linklist l;
list_tail_insert(l);
print_list(l);
return 0;
}尾插法头插法对比 因为头插法头指针已经占据了头部位置 所以他一直都是l->next=NULL,s->data=x,s->next=l->next,l—>next=s,一直是倒着插
而尾插法 是建立了尾指针 *r=l,s->data=x,r->next=s,r=s,然后是循环,需要加强。
链表头插法 尾插法
最新推荐文章于 2024-05-23 21:23:36 发布