資料結構中的棧與佇列

2021-08-21 18:28:34 字數 1640 閱讀 6727

在資料結構中,有兩個知識體系特別重要,分別是棧和佇列。兩個定義方法很類似,區別在於棧是先入後出,佇列是先入先出。

棧:一種先入後出的操作,主要以順序棧為基礎,棧其實類似與小時候的玩具槍的彈夾,最先按進去的子彈,最後才會發射。

棧的順序實現:

#pragma once 

#include #include #include #include #define max_size 100

typedef int sdatatype;

typedef struct stack stack;

// 初始化

void stackinit(stack *pstack)

// 壓棧

void stackpush(stack *pstack, sdatatype data)

// 出棧

void stackpop(stack *pstack)

// 返回棧頂元素

sdatatype stacktop(stack *pstack)

// 判斷是否為空

// 1 空

// 0 不空

int stackisempty(stack *pstack)

else return 1;

}// 返回資料個數

int stacksize(stack *pstack)

void teststack()

printf("\n");

}

這是棧的順序儲存,常用的比較多。

佇列:佇列是一種先入先出的結構,和我們日常生活中的排隊特別相似,排在隊頭的人,第乙個享受服務。

佇列中鏈式佇列使用的較多,這次主要以鏈式佇列為主。

鏈式佇列**:

#pragma once

#include #include #include typedef int qdatatype;

typedef struct qnode qnode;

typedef struct queue queue;

// 初始化

void queueinit(queue *pqueue)

// 入佇列

void queuepush(queue *pqueue, qdatatype data)

pqueue->prear->pnext = pnewnode;//此時隊尾元素的下乙個指向新元素

pqueue->prear = pnewnode;//將隊尾重置

}// 出佇列

void queuepop(queue *pqueue)

}// 返回隊首元素

qdatatype queuefront(queue *pqueue)

// 判斷是否為空

// 1 空

// 0 不空

int queueisempty(queue *pqueue)

// 返回資料個數

int queuesize(queue *pqueue)

void testqueue()

printf("\n");

}

至此,棧與佇列的**就顯示完畢,大多數的操作已經在**中體現出來,博主就不贅言太多,因為**就是博主最想表露的心聲。

資料結構 棧與佇列

題目 1.編寫函式,採用鏈式儲存實現棧的初始化 入棧 出棧操作 2.編寫函式,採用順序儲存實現棧的初始化 入棧 出棧操作 3.編寫函式,採用鏈式儲存實現佇列的初始化 入隊 出隊操作 4.編寫函式,採用順序儲存實現佇列的初始化 入隊 出隊操作 5.編寫乙個主函式,在主函式中設計乙個簡單的選單,分別除錯...

資料結構 棧與佇列

棧的原則是後進先出,即插入與刪除元素均在棧頂進行。獲取棧頂元素 s.top 佇列的原則是先進先出,即插入資料在隊尾進行,刪除資料在隊頭進行。獲取隊頭元素 q.front 思路 用兩個棧,乙個棧用來進隊,乙個棧用來出隊,當資料進入佇列的時候,我們將其壓入乙個棧,當資料出隊的時候,我們將儲存在棧內的資料...

資料結構 棧與佇列

1.順序棧 基本操作 typedef int elemtype 定義 順序棧 typedef struct sqstack 判空 bool stackempty sqstack s 進棧 bool push sqstack s elemtype x 出棧操作 bool pop sqstack s e...