如何在C語言中使用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)棧和隊(duì)列

在C語言中,可以使用結(jié)構(gòu)體數(shù)組來實(shí)現(xiàn)棧和隊(duì)列。以下是一個(gè)簡單的示例:


#include <stdio.h>
#include <stdbool.h>
// 定義棧的結(jié)構(gòu)體
typedef struct {
    int data[100]; // 存儲(chǔ)數(shù)據(jù)的數(shù)組
    int top;       // 棧頂指針
} Stack;
// 初始化棧
void initStack(Stack *s) {
    s->top = -1;
}
// 入棧操作
void push(Stack *s, int value) {
    if (s->top >= 99) {
        printf("棧已滿,無法入棧
");
        return;
    }
    s->data[++s->top] = value;
}
// 出棧操作
int pop(Stack *s) {
    if (s->top < 0) {
        printf("棧為空,無法出棧
");
        return -1;
    }
    return s->data[s->top--];
}
// 判斷棧是否為空
bool isEmpty(Stack *s) {
    return s->top == -1;
}
// 定義隊(duì)列的結(jié)構(gòu)體
typedef struct {
    int data[100]; // 存儲(chǔ)數(shù)據(jù)的數(shù)組
    int front;     // 隊(duì)首指針
    int rear;      // 隊(duì)尾指針
} Queue;
// 初始化隊(duì)列
void initQueue(Queue *q) {
    q->front = q->rear = -1;
}
// 入隊(duì)操作
void enqueue(Queue *q, int value) {
    if ((q->rear + 1) % 100 == q->front) {
        printf("隊(duì)列已滿,無法入隊(duì)
");
        return;
    }
    q->rear = (q->rear + 1) % 100;
    q->data[q->rear] = value;
    if (q->front == -1) {
        q->front = q->rear;
    }
}
// 出隊(duì)操作
int dequeue(Queue *q) {
    if (q->front == -1) {
        printf("隊(duì)列為空,無法出隊(duì)
");
        return -1;
    }
    int value = q->data[q->front];
    if (q->front == q->rear) {
        q->front = q->rear = -1;
    } else {
        q->front = (q->front + 1) % 100;
    }
    return value;
}
// 判斷隊(duì)列是否為空
bool isQueueEmpty(Queue *q) {
    return q->front == -1;
}

這個(gè)示例中,我們定義了兩個(gè)結(jié)構(gòu)體:Stack用于實(shí)現(xiàn)棧,Queue用于實(shí)現(xiàn)隊(duì)列。每個(gè)結(jié)構(gòu)體都有一個(gè)數(shù)組data來存儲(chǔ)數(shù)據(jù),以及一個(gè)或兩個(gè)指針(topfrontrear)來表示棧頂或隊(duì)列的頭部和尾部位置。我們還提供了一些基本的棧和隊(duì)列操作函數(shù),如pushpopenqueuedequeue等。

主站蜘蛛池模板: 在线精品自拍亚洲第一区 | 国产电影一区二区| 亚欧成人中文字幕一区 | 国产经典一区二区三区蜜芽| 欧美成人aaa片一区国产精品| 中文无码精品一区二区三区 | 麻豆一区二区三区蜜桃免费| 精品视频一区二区三三区四区| 国产日韩AV免费无码一区二区三区| 亚洲国产成人久久一区二区三区 | 日韩精品无码一区二区三区免费 | 天天综合色一区二区三区| 亚洲一区二区三区夜色| 国产综合无码一区二区辣椒 | 亚洲日韩一区精品射精| 精品视频一区二区三三区四区| 国产美女露脸口爆吞精一区二区| 无码人妻久久一区二区三区蜜桃| 在线免费视频一区| 狠狠做深爱婷婷久久综合一区 | 色一乱一伦一区一直爽| 亚洲AV无码一区二三区| 一级毛片完整版免费播放一区 | 乱中年女人伦av一区二区| 日韩一区二区三区视频| 视频一区视频二区日韩专区| 国产一区二区三区日韩精品| 国产日韩视频一区| 国产韩国精品一区二区三区| 国产日韩一区二区三免费高清| 日韩制服国产精品一区| 秋霞午夜一区二区| 99久久综合狠狠综合久久一区| 亚洲Av高清一区二区三区| 亚洲AV无码一区二区大桥未久| 亚洲综合av一区二区三区不卡 | 中文精品一区二区三区四区| 黑巨人与欧美精品一区| 亚洲欧洲一区二区三区| 亚洲AV无码一区二区乱孑伦AS| 亚洲制服中文字幕第一区|