先上函式**
函式總結:#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、建立表頭與操作指標
head是表頭,也就是表名;list head=null;
list current=null,pre=null;
2、建立空節點:(建立)
呼叫的時候可以用迴圈來獲取新得到的節點:list createempty(void)
current=createempty();//1建立
3、賦值並判斷
建立節點後需要直接進行賦值cin>>current->data;//2賦值
if(current->data==-1) break;
然後對值進行判斷才可知此節點是否可以被鏈結
這個鍊錶的判斷是==-1時跳出,其他鍊錶看情況進行判斷
鏈結的本質是在操作本輪的節點時,將本節點的賦值給pre的next指標,只有頭結點是將本節點直接賦給head頭指標;if(head==null) //2鏈結
head=current;
else
pre->next=current;
5、初始化next指標:(更尾)
current->next=null;//3更尾
這個初始化其實就是更新煉表表尾,每一輪都將本輪節點的next賦null;
6、儲存表尾
pre=current;//5存尾
7、結束
在這裡用的while(1)+if判斷本輪資料域來while(1)
四:鍊錶函式
typedef struct node* list;
1、求表長
返回值:int
引數:表頭list
乙個迴圈從表頭遍歷一遍鍊錶即可,int length(list ptrl)
return i;
}
2、找位置
返回值:list
引數:位置i
(重點!)頭結點位置為0!!!list find(int i)
return p;
}
返回值是該位置的list;
3、插入值
引數:插入的值x,插入的位置,需要插入的煉表頭ptrl;
返回值:已經插入好的list,用表頭接收即可;
s是新節點,p是find(i-1);list insert(int x,int i,list ptrl)
p=find(i-1);
if(p==null)
else
}
先建立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...