头插法建立
typedef struct LNode{
int data;
struct LNode next;
}LNode,*LinkList;
LinkList Init(){
LinkList p = (LinkList)malloc(sizeof(LNode));
p->next = NULL;
return p;
}
//LNode *List_HeadInsert(LNode L)
LinkList List_HeadInsert(LinkList L){
int x;
L->next = NULL;
LinkList s;//声明新结点
scanf("%d",&x);
while(x!=9999){
s = (LinkList)malloc(sizeof(LNode));//新结点
s->data = x;
s->next = L->next;//指向首结点
L->next = s;
scanf("%d",&x);
}
return L;
}
void ListTraverse(LinkList L){
LinkList p->next = L;
while(p!=NULL){
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
int mian(){
LinkList L = Init();
List_HeadInsert(L);
ListTraverse(L);
}
尾插法建立
typedef struct LNode{
int data;
struct LNode next;
}LNode,*LinkList;
LinkList Init(){
LinkList p = (LinkList)malloc(sizeof(LNode));
p->next = NULL;
return p;
}
LinkList List_TailInsert(LinkList L){
int x;
LinkList r = L;//r是表尾指针,当前没东西暂时指向表头
LinkList s;//声明新结点
scanf("%d",&x);
while(x!=9999){
s = (LinkList)malloc(sizeof(LNode));//新结点
s->data = x;
r->next = s;
r = s;//r指向新表尾,每加一个新结点,该新结点就变成表尾
scanf("%d",&x);
}
r->next = NULL;//尾结点指针为空
return L;
}
void ListTraverse(LinkList L){
LinkList p->next = L;
while(p!=NULL){
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
int mian(){
LinkList L = Init();
List_TailInsert(L);
ListTraverse(L);
}