亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
中宁县| 大同县| 基隆市| 历史| 正镶白旗| 兴安盟| 米林县| 海阳市| 广州市| 彭水| 海伦市| 新安县| 阜城县| 卫辉市| 江津市| 和林格尔县| 平湖市| 郑州市| 西平县| 自贡市| 长岛县| 西乌珠穆沁旗| 铁岭县| 嘉荫县| 南通市| 阳朔县| 陵川县| 西宁市| 晋州市| 巫山县| 廊坊市| 石嘴山市| 芮城县| 改则县| 黄石市| 古交市| 邹城市| 济宁市| 陆河县| 拜城县| 玉树县|