一、采用帶有頭結點的頭插法逆向建立單鏈表
Linklist List_HeadInsert1(LinkList &L) //采用帶有頭結點的頭插法逆向建立單鏈表
{
LNode *s; //聲明一個臨時結點
int x;
L=(LinkList)malloc(sizeof(LNode)); //創建頭結點
L->next=NULL; //初始為空鏈表
scanf("%d",&x); //輸入結點的值
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode)); //創建新結點
s->data=x;
s->next=L->next; //將新結點插入表中,L為頭指針
L->next=s;
scanf("%d",&x);
}
return L;
}
二、采用不帶有頭結點的頭插法逆向建立單鏈表
Linklist List_HeadInsert2(LinkList &L) //采用不帶有頭結點的頭插法逆向建立單鏈表
{
LNode *s; //聲明一個臨時結點
int x;
L=NULL;
scanf("%d",&x); //輸入結點的值
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode)); //創建新結點
s->data=x;
if(L==NULL) // 若第一次創建節點,則將該點設置為頭節點
{
L=s;
s->next=NULL;
}
else{ // 若不是第一次創建節點,則直接將新節點接到鏈表頭
s->next=L;
L=s;
}
scanf("%d",&x);
}
return L;
}
三、采用帶有頭結點的尾插法正向建立單鏈表
Linklist List_TailInsert1(LinkList &L) //采用帶有頭結點的尾插法正向建立單鏈表
{
LNode *s,*r; //s為臨時結點,r為表尾指針
int x;
L=(LinkList)malloc(sizeof(LNode)); //創建頭結點
L->next=NULL; //初始為空鏈表
r=L;
scanf("%d",&x); //輸入結點的值
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode)); //創建新結點
s->data=x;
r->next=s;
r=s; //r指向新的表尾結點
scanf("%d",&x);
}
r->next=NULL; //尾結點指針為空
return L;
}
四、用不帶有頭結點的尾插法正向建立單鏈表
Linklist List_TailInsert2(LinkList &L) //采用不帶有頭結點的尾插法正向建立單鏈表
{
LNode *s,*r; //s為臨時結點,r為表尾指針
int x;
L=NULL;
r=L;
scanf("%d",&x); //輸入結點的值
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode)); //創建新結點
s->data=x;
if(L==NULL) // 創建鏈表的第一個節點
{
L=s;
r=s;
s->next=NULL;
}
else{
r->next=s;
r=s;
}
scanf("%d",&x);
}
r->next=NULL; //尾結點指針為空
return L;
}