單鏈表基本操作(1)
阿新 • • 發佈:2019-01-23
單鏈表基本操作
建立
- 建立
- 頭插入載入
- 尾插入載入
建立空連結串列
建立一個單鏈表,且為空表,並且返回連結串列
建立結構型別,在CS.c檔案中
typedef struct node{
int data;
struct node *next;
}LINKLIST;
在Link.h寫出方法宣告
#include <stdio.h>
#include "CS.c"
/*
建立一個空單鏈表
*/
LINKLIST *inill();
在Link.c中實現此方法
#include "Link.h"
LINKLIST *inill(){
LINKLIST *L;
L=(LINKLIST *)malloc (sizeof(LINKLIST));
L->next=NULL;
L->data=-1;
return (L);
}
宣告一個連結串列變數,並且分配空間,設定next指標域為NULL,data資料域為-1.
在main.c中呼叫此方法,並且進行判斷
#include <stdio.h>
#include "Link.h"
int main(int argc, const char * argv[]) {
//建立了空的連結串列
LINKLIST *linklist=inill();
printf("inill() method create is a null line %d \n" ,linklist->next==NULL);
return 0;
}
根據定義:頭結點的指標域存放指向首節點的指標,當連結串列為空時,首節點的指標為空,即:頭結點的指標域為空.
列印資料:
inill() method create is a null line 1
所以為linklist為空連結串列
頭插入載入
link.h
/*
頭插入載入
*/
LINKLIST * loadHead();
link.c
LINKLIST * loadHead(){
LINKLIST *p,*Q;
int x;
Q=(LINKLIST *)malloc (sizeof(LINKLIST));
Q->data=-1;
Q->next=NULL;
printf("please input the integer to inster\n");
scanf("%d",&x);
while (x!=-1) {
p=(LINKLIST *) malloc(sizeof(LINKLIST));
p->data=x;
p->next=Q->next;
Q->next=p;
scanf("%d",&x);
}
return Q;
}
1.先建立一個空連結串列Q
2.然後從鍵盤輸入 x
3.
main.c
//頭插入
LINKLIST *headInsertList=loadHead();
printf("headInsertList=[");
while (headInsertList!=NULL) {
if(headInsertList->data==-1){
printf("%d",headInsertList->data);
}else{
printf(",%d",headInsertList->data);
}
headInsertList=headInsertList->next;
}
printf("]\n");
列印結果:
please input the integer to inster
1
2
3
4
5
-1
headInsertList=[-1,5,4,3,2,1]
尾插入載入
link.h
/*
尾插入載入
*/
LINKLIST * loadRear();
link.c
LINKLIST * loadRear(){
LINKLIST *q,*Q,*R;
Q=(LINKLIST *) malloc(sizeof(LINKLIST));
R=Q;
Q->data=-1;
Q->next=NULL;
int x;
printf("please insert integer \n");
scanf("%d",&x);
while (x!=-1) {
q=(LINKLIST *) malloc(sizeof(LINKLIST));
q->data=x;
q->next=NULL;
Q->next=q;
Q=q;
scanf("%d",&x);
}
return R;
}
解釋
1.建立了一個空連結串列Q,並且付給了R,
2.從鍵盤輸入x
3.輸入的資料不為-1
3.1建立一個空連結串列q
3.2設定q的資料域為x q->data=x;
3.3設定q的指標域為NULL
3.4設定Q的指標域為輸入的q
3.5最後把剛建立的連結串列賦給Q,供下次再次插入的時候使用,這是關鍵的一步操作
4.最後把R返回,表示連結串列的頭指標
這裡就不做流程圖了,就是按照的是頭插入載入差不多
main.c
//尾插入
LINKLIST *lastInsertList=loadRear();
printf("lastInsertList=[");
while (lastInsertList!=NULL) {
if(lastInsertList->data==-1){
printf("%d",lastInsertList->data);
}else{
printf(",%d",lastInsertList->data);
}
lastInsertList=lastInsertList->next;
}
printf("]\n");
列印結果:
please insert integer
1
2
3
4
5
-1
lastInsertList=[-1,1,2,3,4,5]
Program ended with exit code: 0