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

   2025-02-13 8260
核心提示:在C语言中,可以使用数组或链表来实现栈的定义。使用数组实现栈:首先,需要定义一个数组和一个变量作为栈顶指针。栈顶指针指向

在C语言中,可以使用数组或链表来实现栈的定义。

使用数组实现栈:首先,需要定义一个数组和一个变量作为栈顶指针。栈顶指针指向栈中最新添加的元素。

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

使用链表实现栈:定义一个结构体作为链表节点,其中包含一个数据域和一个指向下一个节点的指针。

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

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

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言