五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
鞍山市| 凤山县| 翁牛特旗| 琼海市| 若羌县| 双峰县| 阳新县| 娄底市| 澳门| 疏附县| 富源县| 汤阴县| 澎湖县| 阿图什市| 抚宁县| 宿州市| 磴口县| 汉寿县| 临澧县| 鄂伦春自治旗| 天门市| 麦盖提县| 宣恩县| 汪清县| 临洮县| 芮城县| 恩施市| 原阳县| 阜新市| 雅安市| 临沭县| 湟源县| 金山区| 汶川县| 申扎县| 临颍县| 平顺县| 怀来县| 沐川县| 平塘县| 金平|