c语言定义栈的方法是什么

avatar
作者
猴君
阅读量:0

在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); } 

以上是两种常见的实现栈的方法,具体选择哪一种取决于应用的需求和个人偏好。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!