?
棧和隊列是用c語(yǔ)計算機科學(xué)中兩種基本的數據結構,它們在算法設計和程序開(kāi)發(fā)中具有廣泛的實(shí)現應用,C語(yǔ)言作為一種通用的棧和編程語(yǔ)言,提供了實(shí)現棧和隊列的隊列基本操作的功(′?`)能,下面??將詳細介紹如何使用C語(yǔ)言實(shí)現棧和隊列。用c語(yǔ)
(圖片來(lái)源網(wǎng)絡(luò ),實(shí)現侵刪)1、棧和棧(Stack)
棧是隊列一種后進(jìn)先出(LIFO)的數據結構,只允許在棧頂進(jìn)行插入和刪除操作,用c語(yǔ)棧的實(shí)現基本操作包括入棧(push)、出棧(pop)和查看棧頂元素(top)。棧和
下面是隊列使用C語(yǔ)言實(shí)現棧的代碼:
#in??clude <stdi??o.h>#include <stdlib.h>#define MAX_SIZE 100typedef struct { int data[MAX_SIZE]; int top;} Stack;// 初始化棧void init(Stack *stack) { stack>top = 1;}// 判斷棧是否為空int isEmpty(Stack *stack) { return stack>top == 1;}// 入棧void push(Stack *stack, int value) { if (stack>top == MAX_SIZE 1) { prin(?Д?)tf("Stack is full!"); retur┐(′д`)┌n; } stack>data[++stack>t??op] = value;}// 出棧int pop(Stack *stack) { if (isEmpty(stack)) { printf("Stack is?? empty!"); return 1; } return stack>data[stack>top];}// 查看棧頂元素int peek(Stack *st??ack) { if (isEmpty(stack)) { printf("Stack is empty!"); return 1; } return stack>data[stack>t(′_ゝ`)op];}上述代碼定義了一個(gè)Stack結構體,包含了一個(gè)整型數組data和一個(gè)表示棧頂位置的(de)用c語(yǔ)整數top。init函數用于初(???)始化棧,實(shí)現將棧頂位置設置為1。棧和isEmpty函數用于判??斷棧是否為空,當棧頂位置為1時(shí)表示棧為空。push函數用于將元素壓入棧頂,如果棧已滿(mǎn)則輸出錯誤信息。pop函數用于彈出棧頂元素,如果棧為空則輸出(chu)錯誤信息并返回1。peek(′?_?`)函數用??于查看棧頂元素,如果棧為空則輸出錯誤信(???)息并返回1。
2、隊列((′-ι_-`)Queue(╬?益?))
隊列是一種先進(jìn)先出(FIFO)的數據結構,允??許在隊頭和隊尾進(jìn)行插入和刪除操作,??隊列的基本操作包括入隊(en??queue)、出隊(dequeue)和查看隊頭元素(front)。
下面是使用C語(yǔ)言實(shí)現隊列的代碼:
#??include <stdio.h>#include <stdlib.h>#define MAX_SIZE 100typedef struct { int data[MAX_??SIZE]; int front; int rear;} Queue;// 初始化隊列vo??id init(Queue *queue) { queue>front = 0; queue>rear(′▽?zhuān)? = 0;}// 判斷隊列是否為空int isEmpty(Queue *queue) { return queue>front == queue>re(′ω`)ar;}// 入隊void enqueue(Queue *queue, int value) { if (queue>rear == MAX_SIZE 1) { printf("Q??ueue is full!"); return; } queue>data[+??+queue>rear] = value;}// 出隊int dequeue(Queue *queue) { if (isEmpty(queue)) { printf("Queue is empty!"); return 1; } return?? queue>data[queue>front++];}// 查看隊頭元素int peek(Queue *queue) { if (isEmpty(queue)) { printfヽ(′ー`)ノ("Queue is empty!"); return 1; } return queue>data[queue>front];}