鍊錶的學習
在資料結構中有一種結構叫做線性表,線性表是儲存乙個線性資料的**,本文就簡要的介紹一下線性表的構成。
一、線性表的定義
定義:由同種型別資料元素構成的有序數列的線性結構
長度、表頭、表尾
list
線性表的形式有兩種:一種是陣列構成的表,另一種是鍊錶。
所謂陣列形成的表就是乙個陣列,如下定義所示
typedef structlist
從上面可以看出乙個線性表型別要包括一組資料和資料的最末尾。
這樣有乙個弊端,就是在對線性表插入時需要對其後面的所有元素挪動位置。
故我們採取另一種方式,也就是鍊錶的結構
結構如下:
typedef struct nodelist;
二、鍊錶基本功能實現
(1)求表的長度
void length(list *ptrl)
return j;
}
(2)查詢
按序號查詢
list *findkth(int k,list *ptrl)
if(i == k)
return p;
else
return null;
}
按值查詢
list *find(element data,list *ptrl)
//找不到就是null
return p;
}
(3)插入元素
在鍊錶中某個位置插入某個元素
所以入口引數為元素內容、位置、鍊錶。
出口引數為新的鍊錶。
list *insert(elementtype x,int i,list* ptrl)
else
else
}}
(4)刪除元素
list* delete(int i, list *ptrl)
1、先找到鍊錶的第 i-1 個結點,用p 指向;
2、再用指標s 指向要被刪除的結點:p的下乙個節點
3、然後修改指標,刪除s 所指結點;
4、最後釋放s 所指結點的空間。
list* delete(int i, list *ptrl)
else
else
}}
注意:在進行指標操作時要記住判斷是否為空;
posted @
2016-01-31 15:03
#cloud 閱讀(
...)
編輯收藏
c語言 鍊錶 C語言鍊錶例項 玩轉鍊錶
下圖為最一簡單鍊錶的示意圖 第 0 個結點稱為頭結點,它存放有第乙個結點的首位址,它沒有資料,只是乙個指標變數。以下的每個結點都分為兩個域,乙個是資料域,存放各種實際的資料,如學號 num,姓名 name,性別 和成績 score 等。另乙個域為指標域,存放下一結點的首位址。鍊錶中的每乙個結點都是同...
c語言鍊錶 鍊錶
在儲存一大波數的時候,我們通常使用陣列,但有時候陣列顯得不夠靈活,比如有一串已經從小到大排序好的數 2 3 5 8 9 10 18 26 32 現在需要往這串數中插入6使其得到的新序列仍符合從小到大排列。如果我們使用陣列來實現這一操作,則需要將8和8後面的數字都依次往後挪一位,如果你覺得這幾個數不算...
寒假集訓之鍊錶小結
使用鍊錶首先建立節點的結構體 struct node 鍊錶的建立有兩種一種是順序建立一種是逆序建立,兩者相比較而言逆序更簡單一些,他比順序少設定乙個指標下面是逆序建立鍊錶的函式 struct node creat int len 逆序建立鍊錶 return head 因為返回值是乙個指標所以函式名前...