前言:線性表是最經常使用的一種數據結構。線性表是n個數據元素的有限序列。線性表有兩種表示:順序表示和鏈式表示。順序表示是指以組連續的存儲空間依次存儲線性表的數據元素,如數組就是一個線性表。而鏈式表示的特帶你是用一組任意的存儲單元存儲線性表的數據元素(也能夠連續,也能夠不聯繫)。在此,主要記錄鏈式表的學習筆記。node
線性鏈表數組
1.組成:指針域+數據域數據結構
2.分類:單鏈表(主要講解單鏈表),雙向鏈表,循環鏈表;ide
3.單鏈表的結構體類型定義:學習
typedef struct node { int info; node * next; }HeadLink;
4.創建單鏈表(帶頭結點)的方法:頭插法(逆序),尾插法(順序)spa
1 HeadLink *Creat(void)//頭插發,逆序 2 { 3 char c; 4 node *head,*p; 5 head=(struct node *)malloc(sizeof(struct node)); 6 head->next=NULL; 7 while((c=getchar())!='\n') 8 { 9 p=(struct node *)malloc(sizeof(struct node)); 10 p->info=c; 11 p->next=head->next; 12 head->next=p; 13 } 14 return head; 15 } 16 17 HeadLink * Creat2(void)//尾插法 18 { 19 char c; 20 node *head, *last, *p; 21 head=(struct node *)malloc(sizeof(struct node)); 22 head->next=NULL; 23 last=head->next; 24 while((c=getchar())!='\n') 25 { 26 p=(struct node *)malloc(sizeof(struct node)); 27 p->info=c; 28 p->next=NULL; 29 if(head->next==NULL) 30 { 31 head->next=p; 32 last=p; 33 } 34 else 35 { 36 last->next=p; 37 last=p; 38 } 39 } 40 return head; 41 }
5.單鏈表的打印指針
void printLink( HeadLink *head)//打印數據 有節點的 { HeadLink * p; p=head; p=p->next; while(p !=NULL) { printf("%c ",p->info); p=p->next; } }
6.獲取鏈表長度code
int Get_List_Len(HeadLink * head)//單鏈表的長度 { int len=0; HeadLink *p; p=head->next; while(p!=NULL) { len++; p=p->next; } return len; }
七、排序(直接插入法)blog
//帶有頭結點的單鏈表的結點排序 HeadLink * Link_Sort(HeadLink * head) { HeadLink *p,*qnext,*rhead,*temp; p=head->next;//除去頭節點 head->next=NULL; while(p)//執行N-1次 N爲長度 { rhead=head; qnext=head->next; while(qnext&&qnext->info<=p->info)//查找插入位置 { rhead=qnext; qnext=qnext->next; } temp=p->next; p->next=rhead->next; rhead->next=p; p->next=temp; } return head; }
總結:鏈表的掌握主要掌握它的特徵(主要利用指針的做用)和它的一些基本操做(查找,插入,刪除,新建)。排序