大一新生必看,自學必看,里昂詳解資料結構之鍊錶

2021-10-23 17:26:17 字數 3665 閱讀 1913

1. 鍊錶建立操作的基本步驟:鍊錶是乙個動態的結構,它不需要分配空間,因此建立鍊錶的過程是乙個結點「逐個插入」 的過程。先建立乙個只含頭結點的空單鏈表,然後依次生成新結點,再不斷地將其插入到鍊錶的頭部或尾部,分別稱其為「頭插法」和「尾插法」。

2. 鍊錶查詢操作的基本步驟:因煉表是一種"順序訪問"的結構,則要在帶頭結點的鍊錶中查詢到第 i個元素,必須從頭結點開始沿著後繼指標依次"點數",直到點到第 i 個結點為止,如果查詢成功,則用e返回第i個元素值。頭結點可看成是第0個結點。

3. 鍊錶插入操作的基本步驟:先確定要插入的位置,如果插入位置合法,則再生成新的結點,最後通過修改鏈將新結點插入到指定的位置上。

4. 鍊錶刪除操作的基本步驟:先確定要刪除的結點位置,如果位置合法,則再通過修改鏈使被刪結點從鍊錶中「卸下」,最後釋放被刪結點的空間。

單鏈表的儲存結構描述如下:

typedef

struct lnode //定義單鏈表結點型別

linklist;

初始化鍊錶:

void

initlist

(linklist *

&l)

銷毀線性表:

void

destroylist

(linklist *

&l)//銷毀線性表

free

(p);

}

判斷是否為空表:

bool listempty

(linklist *l)

//判線性表是否為空表

求線性表長度:

int

listlength

(linklist *l)

//求線性表的長度

return

(i);

}

輸出線性表:

void

displist

(linklist *l)

//輸出線性表

printf

("\n");

}

求線性表某個資料元素值:

bool getelem

(linklist *l,

int i,elemtype &e)

//求線性表中某個資料元素值

if(p==

null

)//不存在第i個資料節點,返回0

return false;

else

//存在第i個資料節點,返回1

}

按元素值查詢:

int

locateelem

(linklist *l,elemtype e)

//按元素值查詢

if(p==

null

)//不存在元素值為e的節點,返回0

return(0

);else

//存在元素值為e的節點,返回其邏輯序號i

return

(i);

}

鍊錶的插入:

bool listinsert

(linklist *

&l,int i,elemtype e)

//插入資料元素

if(p==

null

)//未找到第i-1個節點,返回false

return false;

else

//找到第i-1個節點*p,插入新節點並返回1

}

線性表的刪除:

bool listdelete

(linklist *

&l,int i,elemtype &e)

//刪除資料元素

if(p==

null

)//未找到第i-1個節點,返回false

return false;

else

//找到第i-1個節點*p

}

編寫乙個程式,實現單鏈表的各種基本運算(假設單鏈表的元素型別為char),並在此基礎上設計乙個主程式完成如下功能:

(1)初始化單鏈表h;

(2)依次採用尾插法插入a、b、c、d、e元素;

(3)輸出單鏈表h;

(4)輸出單鏈表h的長度;

(5)判斷單鏈表h是否為空;

(6)輸出單鏈表h的第3個元素;

(7)輸出元素a的位置

(8)在第4個元素位置上插入f元素

(9)輸出單鏈表h;

(10)刪除h的第3個元素;

(11)輸出單鏈表h;

(12)釋放單鏈表h。

typedef

int elemtype;

typedef

struct node book,

*booklist;

typedef

struct lnode linklist;

void

initlist

(linklist*

&l)void

destorylist

(linklist*

&l)free

(p);

}bool listempty

(linklist*l)

intlistlength

(linklist*l)

return

(i);

}void

displist

(linklist*l)

printf

("\n");

}bool getelem

(linklist*l,

int i, elemtype &e)

if(p ==

null

)return false;

else

}int

locateelem

(linklist*l, elemtype e)

if(p ==

null

)return(0

);else

}bool listinsert

(linklist*l,

int i, elemtype e)

if(p ==

null

)return false;

else

}bool listdelete

(linklist*

&l,int i, elemtype&e)

if(p ==

null

)return false;

else

}int

main()

大一新生必看,自學必看,里昂詳解資料結構之線性表

1 順序表插入操作的基本步驟 要在順序表中第 i 個資料元素之前插入一 個資料元素 x,首先要判斷插入位置 i 是否合法,假設線性表的長為 n,則 i 的 合法值範圍 1 i n 1,若是合法位置,就再判斷順序表否滿,如果滿,則增 加空間或結束操作,如果不滿,則將第 i 個資料元素及其之後的所有資料...

大一新生必看,自學必看,里昂詳解資料結構之堆疊

堆疊,一種先進後出的線性表。僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。順序棧結...

大一新生該學的

看到老師讓給新入學學弟們點經驗。1.別為了適用而學習。因為你暫時還不知道你以後的職業,還不能規劃自己的職業道路。所以一定要面廣,也不要太鑽研,已理解和了解為主。2.鍛鍊自己的能力,提高個人素質。這是你終身適用的。在以後的道理中,你更主要的是跟人在打交道。3.經歷大學該經歷的。去看看10個或100大學...