list 鍊錶函式(小結)

2021-08-18 12:29:44 字數 2931 閱讀 6744

先上函式**

#include#include#include#include#include#includeusing namespace std;

struct node;

typedef struct node * list;

list head=null;

list current=null,pre=null;

list createempty(void)

int length(list ptrl)

return i;

}list find(int i)

return p;

}list insert(int x,int i,list ptrl)

p=find(i-1);

if(p==null)

else

}list delete(int i,list ptrl)//i是待刪除的節點號 ptrl是傳進來的待操作的煉表頭

else//中間節點的情況 }

int main()

head=insert(110,3,head);//插入

head=delete(3,head);//刪除

current=head;

while(current!=null)

}

函式總結:

一、node是結構體

struct node;
data是資料域;

二、(重)head頭指標一定要在用之前賦空,否則程式會崩潰;

三(過程!!)乙個鍊錶的建立:

1、建立表頭與操作指標

list head=null;

list current=null,pre=null;

head是表頭,也就是表名;

2、建立空節點:(建立)

list createempty(void)

呼叫的時候可以用迴圈來獲取新得到的節點:

current=createempty();//1建立
3、賦值並判斷

cin>>current->data;//2賦值 

if(current->data==-1) break;

建立節點後需要直接進行賦值

然後對值進行判斷才可知此節點是否可以被鏈結

這個鍊錶的判斷是==-1時跳出,其他鍊錶看情況進行判斷

if(head==null) //2鏈結 

head=current;

else

pre->next=current;

鏈結的本質是在操作本輪的節點時,將本節點的賦值給pre的next指標,只有頭結點是將本節點直接賦給head頭指標;

5、初始化next指標:(更尾)

current->next=null;//3更尾
這個初始化其實就是更新煉表表尾,每一輪都將本輪節點的next賦null;

6、儲存表尾

pre=current;//5存尾
7、結束

while(1)

在這裡用的while(1)+if判斷本輪資料域來

四:鍊錶函式

typedef struct node* list;

1、求表長

返回值:int

引數:表頭list

int length(list ptrl)

return i;

}

乙個迴圈從表頭遍歷一遍鍊錶即可,

2、找位置

返回值:list

引數:位置i

list find(int i)

return p;

}

(重點!)頭結點位置為0!!!

返回值是該位置的list;

3、插入值

引數:插入的值x,插入的位置,需要插入的煉表頭ptrl;

返回值:已經插入好的list,用表頭接收即可;

list insert(int x,int i,list ptrl)

p=find(i-1);

if(p==null)

else

}

s是新節點,p是find(i-1);

先建立s,再對s和p進行指標操作即可;

傳進的引數是第i個,插入的位置是i之後,所以這種寫法是後插法,

因為表頭是第0個,所以需要find(i-1);

還有就是

s->next=p->next;

p->next=s;

這個順序是不能改變的

1.先把前節點的next賦給新節點的next

2.新節點賦給前節點的next

4、刪除節點

引數:i是傳進來的位置 ptrl是待刪除的煉表頭

返回值:已經刪除過的煉表頭

list delete(int i,list ptrl)//i是待刪除的節點號  ptrl是傳進來的待操作的煉表頭 

else//中間節點的情況

}

前    中    後

s      p      p->next

同樣是後刪法,同樣需要建立s和p節點;

s=find(i-1)

p有兩個作用

一是將p->next賦值給s->next

二是記錄被刪除的節點,待刪除後釋放記憶體;

總結:鬆鬆散散的看了也近乙個月的鍊錶,不敢說這段時間沒有懈怠,恩,走下去罷,一切都會好的

care for self

care for other

list 鍊錶 常用成員函式

在刷題過程中遇到了list中常用的函式,所以總結下來,希望對大家有用。include using namespace std list採用鏈式儲存方法,所以list不能隨機訪問,但是在list插入和刪除元素高效。判空 empty 語法 bool empty empty 函式返回真 true 如果鍊錶...

鍊錶 List

stl中,list class list 的乙個例項 使用乙個doubly linked list管理元素。list不支援隨機訪問,但任何位置上執行元素的安插和移動都非常快。雙向鍊錶 doubly linked list 使用list時必須先包含標頭檔案 include其中list型別系定義於nam...

鍊錶list

includeusing namespace std include 鍊錶list stl中的鍊錶是乙個雙向迴圈鍊錶 list的迭代器是雙向迭代器 void printlist const list l coutl1.push back 10 l1.push back 20 l1.push back...