C 資料結構 實驗1 線性表 棧和佇列

2021-10-11 03:54:51 字數 3302 閱讀 7086

1.線性表的鍊錶實現

(1) 用隨機函式生成10個3位整數(100~999),把這些整數存於鍊錶中;

(2) 輸出鍊錶的內容;

(3) 讀入乙個整數,檢視該整數是否在表中,若在,輸出其位置(首位置為1);

(4) 讀入乙個整數,以及要插入的位置,把該整數插入到鍊錶中,輸出鍊錶的內容(要求判斷輸入的位置是否合理);

(5) 讀入乙個整數,若該整數在煉表裡,刪除該整數,輸出鍊錶的內容;

(6) 把鍊錶的內容翻轉,輸出鍊錶的內容。

#include

#include

#include

#include

#include

using

namespace std;

struct lnode

*head;

void

creatlist

(lnode*

& head,

int n)

l->next =

null;}

intlengthlist

(lnode* head)

return length;

}void

showlist

(lnode* head)

cout << endl;

}int

findvalue

(lnode* head,

int value)

return index <=

lengthlist

(head)

? index :-1

;}intinsertlist

(lnode* head,

int value,

int position)

lnode* temp =

newlnode()

; temp-

>data = value;

temp-

>next = l-

>next;

l->next = temp;

return1;

}void

deletenode

(lnode* head,

int value)

showlist

(head);}

void

reverselist

(lnode* head)

head-

>next-

>next =

null

;//頭節點的下乙個節點才是儲存資料的節點,翻轉後,第乙個節點指向空

head-

>next = l;

//此時的r已經是null

showlist

(head);}

intmain()

2、棧的鏈式儲存結構實現

(1) 用隨機函式生成10個3位整數(100~999),把這些整數應用入棧操作存於堆疊中,在入棧介面處設定斷點①,按「f5」啟動除錯,按「f10」逐句執行,直到資料全部入棧。程式暫停時觀察棧頂資料和棧頂位置;

(2) 應用出棧操作輸出堆疊的內容,在出棧介面處設定斷點②,按「f5」啟動除錯,按「f10」逐句執行,直到所有資料完全出棧,程式暫停時觀察棧頂資料和棧頂位置的變化。

#include

#include

#include

#include

#include

using

namespace std;

struct stacknode

;struct stacklist

// 用隨機函式生成10個3位整數(100~999),把這些整數應用入棧操作存於堆疊中,

void

randinit()

cout << endl;

}int

pop(

)int

top(

)//返回棧中最上面的頭節點

bool

isempty()

//判斷棧是否為空,可用於避免棧空時進行pop彈出操作};

intmain()

3、佇列的鏈式儲存結構的實現

(1) 用隨機函式生成10個3位整數(100~999),把這些整數應用入隊操作存於佇列中;

(2) 應用遍歷操作輸出佇列的內容;

(3) 把佇列的內容翻轉,應用出隊操作輸出佇列的內容。

#include

#include

#include

using

namespace std;

struct queuenode

queuenode* next;};

struct queue

//返回第乙個節點的資料

intfront()

//返回最後乙個節點的資料

intback()

//判斷佇列是否為空,由於初始化時,從首指標begin的下乙個節點開始儲存資料,只需判斷頭尾是否相等就可以判斷是否為空

bool

isempty()

//往佇列中新增新節點資料

void

push

(int data)

//彈出佇列首個節點

intpop()

//應用遍歷操作輸出佇列的內容;

void

show()

cout << endl;

}//用隨機函式生成10個3位整數(100~999),把這些整數應用入隊操作存於佇列中;

void

randinit()

cout << endl;

}//把佇列的內容翻轉,應用出隊操作輸出佇列的內容。

void

reverse()

end = begin-

>next;

queuenode* tempnode,

* l =

this

->begin-

>next,

* r = l-

>next;

for(

; r !=

null

; r = tempnode)

begin-

>next-

>next =

null

; begin-

>next = l;

show()

;}};

intmain()

資料結構 線性表 棧和佇列

資料概念 資料是對客觀事物的符號表示 資料元素是資料的基本單位 資料物件是性質相同的資料元素的集合 資料結構是相互間存在一種或多種特定關係的資料元素集合,是元素的有限集 元素上關係的有限集 資料的關係包括邏輯結構和儲存結構 資料型別是乙個值的集合和定義在這個值集上的一組操作的總稱 抽象資料型別adt...

資料結構 線性結構(線性表 棧與佇列)

線性表的抽象定義集合a和集合b的並集操作線性表的順序儲存的結構 位址計算獲得元素操作 getelem插入操作 listinsert刪除操作 lisedelete優缺點比較。線性表的單鏈表儲存結構 linklistgetelemlistinsertlistdeletecreatelisthead 頭插...

資料結構 線性表 (棧,佇列,串)

定義 n個元素的有限序列 記為 a1,a2,a3,an 特點 存在唯一表頭表尾。除了表頭,每個元素只有乙個直接前驅。除了表尾,每個元素只有乙個直接後驅。儲存結構 1 順序儲存 位址連續的儲存單元,依次儲存表中資料元素。使得邏輯相鄰的元素,物理位置上也相鄰 優點 隨機訪問表中元素。loc元素位置 l元...