資料結構 鏈佇列的基本操作及應用

2021-10-10 07:04:11 字數 3537 閱讀 4456

實驗目的

通過該實驗,使學生理解鏈佇列的構造特點並靈活應用,掌握鏈隊基本操作的程式設計實現,認識棧是在一端進行插入,在另一端進行刪除集中操作的線性結構,掌握佇列的「先入先出」操作特點,知道判斷佇列空和滿的條件,進一步熟悉c語言中指標操作。

實驗內容

用鏈式儲存結構,實現教材定義的佇列的基本操作。

參考介面

選單中包括以下功能:

1.初始化佇列,

2.銷毀佇列,

3.清空佇列,

4佇列判空,

5.求佇列長度,

6.獲取隊頭元素,

7.插入乙個 元素,

8.刪除乙個元素,

9輸出所有元素。

要求:自定義的函式中不允許出現提示語和輸出語句。

驗收/測試用例

通過選單呼叫各個操作,測試點:

#include

#include

#include

#define ok 1

#define error 0

#define overflow -2

//--------------佇列的鏈式儲存表示-------------------

typedef

int status;

//status是函式的型別,其值是函式結果狀態**。

typedef

int qelem;

//自定義

/*該結構體為乙個節點所含內容

data:資料域

*next:指標域

*/typedef

struct qnodeqnode,

*queue;

/*佇列很顯然需要兩個指標,乙個隊頭指標,乙個隊尾指標

front:隊頭指標,初始為null

rear:隊尾指標

*/typedef

struct

lqueue;

//---------------基本操作的函式原型說明------------

status initqueue

(lqueue &q)

;//構造乙個空佇列q

status destroyqueue

(lqueue &q)

;//銷毀佇列q

status clearqueue

(lqueue &q)

;//清空佇列q

status queueempty

(lqueue q)

;//判空

intqueuelength

(lqueue q)

;//求長度

status gethead

(lqueue q,qelem &e)

;//獲取隊頭元素,並用e返回其值

status enqueue

(lqueue &q,qelem e)

;//插入元素e為q的新的隊尾元素

status dequeue

(lqueue &q,qelem &e)

;//刪除q的隊頭元素,並用e返回其值

//---------------主函式----------------------------

intmain()

; qelem e =0;

int choice;

while(1

)switch

(choice)

else

else

if(i==-2

)}break

;case2:

if(!q.front)

else

}break

;case3:

if(!q.front)

else

}break

;case4:

if(!q.front)

else

else

}break

;case5:

if(!q.front)

else

break

;case6:

if(!q.front)

else

else

}break

;case7:

if(!q.front)

else

else

}break

;case8:

if(!q.front)

else

else

}break

;case9:

if(!q.front)

else

else

printf

("【隊尾】\n");

}}break

;default

:printf

("選擇失敗!請重新選擇!\n");

break;}

system

("pause");

//請按任意鍵結束

system

("cls");

//清屏

}return0;

}//---------------基本操作的演算法描述----------------

status initqueue

(lqueue &q)

q.front -

>next =

null

;return ok;

} status destroyqueue

(lqueue &q)

return ok;

} status clearqueue

(lqueue &q)

status queueempty

(lqueue q)

else

}int

queuelength

(lqueue q)

return i;

} status gethead

(lqueue q,qelem &e)

else

}status enqueue

(lqueue &q,qelem e)

// printf("%d\n",e);

p->data = e;

p->next =

null

; q.rear-

>next = p;

q.rear = p;

return ok;

}status dequeue

(lqueue &q,qelem &e)

queue p;

p = q.front-

>next;

e = p-

>data;

//將 q.front的下乙個指標指向下下乙個指標,即front向前移動

q.front-

>next = p-

>next;

if(q.rear == p)

free

(p);

return ok;

}

資料結構 鏈佇列基本操作

include 鏈佇列的基本操作,首先我們要知道佇列是在隊頭進行刪除,隊尾進行插入 include includetypedef struct sq sq typedef struct squeue 到此,佇列的資料結構型別定義完畢 void init squeue squeue p 佇列的初始化 ...

資料結構(C語言) 鏈佇列基本操作

文章首發於2020 10 15 知乎文章 資料結構 c語言 鏈佇列基本操作 佇列是一種先進先出 first in first out,fifo 的線性表,是一種常用的資料結構。它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。...

資料結構佇列的基本操作

include include 鍊錶 佇列的鏈式儲存結構 typedef struct queuenode qnode,queueptr 指向佇列頭和尾的指標結構體 typedef struct queue int main 構造乙個空佇列 void initqueue queue q 向隊尾插入元...