帶結點與不帶結點用頭插法和尾插法建立單鏈表
阿新 • • 發佈:2021-06-19
一、採用帶有頭結點的頭插法逆向建立單鏈表
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;
}