中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言定義棧的方法是什么

小億
82
2023-12-15 21:39:41
欄目: 編程語言

在C語言中,可以使用數組或鏈表來實現棧的定義。

  1. 使用數組實現棧: 首先,需要定義一個數組和一個變量作為棧頂指針。棧頂指針指向棧中最新添加的元素。

    #define MAX_SIZE 100 // 棧的最大容量
    int stack[MAX_SIZE]; // 定義一個數組作為棧
    int top = -1; // 棧頂指針初始化為-1
    
    // 入棧操作
    void push(int element) {
        if (top >= MAX_SIZE - 1) {
            printf("Stack Overflow\n");
            return;
        }
        stack[++top] = element;
    }
    
    // 出棧操作
    int pop() {
        if (top == -1) {
            printf("Stack Underflow\n");
            return -1;
        }
        return stack[top--];
    }
    
    // 獲取棧頂元素
    int peek() {
        if (top == -1) {
            printf("Stack is empty\n");
            return -1;
        }
        return stack[top];
    }
    
    // 判斷棧是否為空
    int isEmpty() {
        return (top == -1);
    }
    
    // 判斷棧是否已滿
    int isFull() {
        return (top == MAX_SIZE - 1);
    }
    
  2. 使用鏈表實現棧: 定義一個結構體作為鏈表節點,其中包含一個數據域和一個指向下一個節點的指針。

    typedef struct StackNode {
        int data; // 數據域
        struct StackNode* next; // 下一個節點的指針
    } StackNode;
    
    StackNode* top = NULL; // 棧頂指針初始化為空
    
    // 入棧操作
    void push(int element) {
        StackNode* newNode = (StackNode*)malloc(sizeof(StackNode)); // 創建新節點
        newNode->data = element; // 設置新節點的數據域
        newNode->next = top; // 將新節點的指針指向當前棧頂節點
        top = newNode; // 更新棧頂指針
    }
    
    // 出棧操作
    int pop() {
        if (top == NULL) {
            printf("Stack Underflow\n");
            return -1;
        }
        int element = top->data; // 獲取棧頂節點的數據域
        StackNode* temp = top; // 保存當前棧頂節點的指針
        top = top->next; // 更新棧頂指針
        free(temp); // 釋放原棧頂節點的內存
        return element;
    }
    
    // 獲取棧頂元素
    int peek() {
        if (top == NULL) {
            printf("Stack is empty\n");
            return -1;
        }
        return top->data;
    }
    
    // 判斷棧是否為空
    int isEmpty() {
        return (top == NULL);
    }
    

以上是兩種常見的實現棧的方法,具體選擇哪一種取決于應用的需求和個人偏好。

0
永吉县| 株洲市| 永新县| 合江县| 饶平县| 玉环县| 盈江县| 嘉善县| 鹤庆县| 浙江省| 永兴县| 旅游| 常州市| 塔城市| 海林市| 商城县| 凯里市| 新平| 临夏市| 皋兰县| 和林格尔县| 新兴县| 汝州市| 枣庄市| 绍兴县| 临西县| 东乡族自治县| 唐海县| 那曲县| 兴业县| 闽清县| 延寿县| 嘉义市| 利川市| 朝阳市| 六盘水市| 会昌县| 大埔区| 寿光市| 陵川县| 武汉市|