最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《數(shù)據(jù)結(jié)構(gòu)(C語言版)》鏈隊列的實現(xiàn)

2022-04-01 14:18 作者:回到唐朝當(dāng)少爺  | 我要投稿

清華大學(xué)計算機(jī)系列教材? ?累計發(fā)行超400萬冊

嚴(yán)蔚敏 吳偉民 編著

數(shù)據(jù)結(jié)構(gòu)(C語言版)

以下是本人對該紫皮書第三章棧和隊列中鏈隊列的代碼實現(xiàn),即課本3.4.2節(jié)隊列的鏈?zhǔn)奖硎竞蛯崿F(xiàn),并處理了非法輸入字母等問題。

(貌似專欄把我縮進(jìn)吃了,懶得加了,另外建議用visual studio編譯)

代碼如下:

/*帶頭結(jié)點的隊列的鏈?zhǔn)奖硎竞蛯崿F(xiàn)*/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define MAXQSIZE 100

typedef int Status;

typedef int QElemType;

typedef struct QNode

{

QElemType data;

struct QNode* next;

}QNode, * QueuePtr;

typedef struct

{

QueuePtr front;//隊頭指針

QueuePtr rear;//隊尾指針

}LinkQueue;

Status InitQueue(LinkQueue& Q);//鏈隊列的初始化

Status DestoryQueue(LinkQueue& Q);//銷毀隊列

Status EnQueue(LinkQueue& Q, QElemType e);//入隊

Status DeQueue(LinkQueue& Q, QElemType& e);//出隊

Status GetHead(LinkQueue Q, QElemType& e);//獲取隊頭元素

void Menu()

{

printf("***************************\n");

printf("********0:退出系統(tǒng)********\n");

printf("********1:元素入隊********\n");

printf("********2:元素出隊********\n");

printf("********3:求隊頭值********\n");

printf("***************************\n");

}

int main()

{

int option;

int value;

LinkQueue MyQueue;

InitQueue(MyQueue);

Menu();

printf("請輸入你想使用的功能:");

while (scanf("%d", &option) != EOF)

{

while (getchar() != '\n');

switch (option)

{

case 1:

printf("請輸入你想入隊的元素:");

while (scanf("%d", &value) != 1)

{

while (getchar() != '\n');

printf("非法輸入,請重試\n");

}

if (EnQueue(MyQueue, value))

{

printf("入隊成功!\n");

}

else

{

printf("隊列的最大長度為%d,隊列已滿!\n", MAXQSIZE - 1);

}

break;

case 2:

if (DeQueue(MyQueue, value))

{

printf("元素%d出隊成功!\n", value);

}

else

{

printf("隊空,無元素可出隊\n");

}

break;

case 3:

if (GetHead(MyQueue, value))

{

printf("隊頭元素為%d\n", value);

}

else

{

printf("隊空,無隊頭元素\n");

}

break;

case 0:

printf("感謝使用!\n");

exit(0);

default:

printf("非法輸入,請重試\n");

}

Menu();

printf("請輸入你想使用的功能:");

}

return 0;

}

Status InitQueue(LinkQueue& Q)//鏈隊列的初始化

{

Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));

if (!Q.front)

{

exit(OVERFLOW);

}

Q.front->next = NULL;

return OK;

}

Status DestoryQueue(LinkQueue& Q)//銷毀隊列

{

while (Q.front)

{

Q.rear = Q.front->next;

free(Q.front);

Q.front = Q.rear;

}

return OK;

}

Status EnQueue(LinkQueue& Q, QElemType e)//入隊

{

QNode* p = (QueuePtr)malloc(sizeof(QNode));

if (!p)

{

exit(OVERFLOW);

}

p->data = e;

p->next = NULL;

Q.rear->next = p;

Q.rear = p;

return OK;

}

Status DeQueue(LinkQueue& Q, QElemType& e)//出隊

{

if (Q.front == Q.rear)

{

return ERROR;

}

QNode* p = Q.front->next;

e = p->data;

Q.front->next = p->next;

if (Q.rear == p)//注意這里要考慮到,當(dāng)隊列中最后一個元素被刪后,隊列尾指針也丟失了,因此需對隊尾指針重新復(fù)制(指向頭結(jié)點)

{

Q.rear = Q.front;

}

free(p);

return OK;

}

Status GetHead(LinkQueue Q, QElemType& e)//獲取隊頭元素

{

if (Q.front == Q.rear)

{

return ERROR;

}

e = Q.front->next->data;

}


《數(shù)據(jù)結(jié)構(gòu)(C語言版)》鏈隊列的實現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
开鲁县| 泽州县| 安平县| 平阴县| 临湘市| 高雄县| 合作市| 武威市| 特克斯县| 阜康市| 弥勒县| 莱芜市| 方城县| 金溪县| 红桥区| 泰和县| 卢湾区| 读书| 平果县| 黑水县| 扶沟县| 当涂县| 高尔夫| 阜平县| 平遥县| 盘锦市| 临湘市| 盈江县| 华安县| 循化| 宁乡县| 凤阳县| 靖边县| 荆门市| 邢台县| 林州市| 田阳县| 新津县| 鸡西市| 白银市| 金沙县|