第9关:链式栈热身训练,C语言实现建立、判空、入栈与出栈操作
以下是使用 C 语言实现链式栈的代码示例: ```c #include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 typedef struct Node { int data; struct Node *next; } Node; // 定义链式栈结构体 typedef struct Stack { Node *top; } Stack; // 创建一个新的节点 Node *createNode(int data) { Node *newNode = (Node *)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode; } // 创建一个空的链式栈 Stack *createStack() { Stack *stack = (Stack *)malloc(sizeof(Stack)); stack->top = NULL; return stack; } // 判断链式栈是否为空 int isEmpty(Stack *stack) { return (stack->top == NULL); } // 入栈操作 void push(Stack *stack, int data) { Node *newNode = createNode(data); newNode->next = stack->top; stack->top = newNode; } // 出栈操作 int pop(Stack *stack) { if (isEmpty(stack)) { printf("Stack is empty!\n"); return -1; } int data = stack->top->data; Node *temp = stack->top; stack->top = stack->top->next; free(temp); return data; } // 打印链式栈 void printStack(Stack *stack) { Node *current = stack->top; while (current!= NULL) { printf("%d ", current->data); current = current->next; } printf("\n"); } int main() { Stack *stack = createStack(); int length = 3; int elements[] = {1, 2, 4}; // 入栈操作 for (int i = 0; i < length; i++) { push(stack, elements[i]); } printf("入栈后: "); printStack(stack); // 出栈操作 pop(stack); printf("出栈后: "); printStack(stack); return 0; } ``` 1. 注意内存的分配和释放,避免内存泄漏。 2. 处理入栈和出栈时,要确保操作的合法性,比如栈为空时不能出栈。 3. 代码中的打印输出格式可以根据实际需求进行调整。 ######[AI写代码神器 | 592点数解答 | 2024-12-21 20:34:29]
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)102
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)108
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)378
- Matlab编程:血管机器人订购与生物学习,实现104周运营成本最低方案(字节豆包 | 3384点数解答 | 2025-06-22 13:25:13)196
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)348
- Golang开发必备:两种实现GET操作的神级方法揭秘!(百度文心 | 465点数解答 | 2023-11-09 18:11:57)260
- 仅一次交换,小写字母字符串能否变身周期字符串?(字节豆包 | 189点数解答 | 2024-10-13 15:08:54)326
- Python实现:O(n)复杂度判断小写字母串能否经一次交换成周期串(字节豆包 | 251点数解答 | 2024-10-13 15:10:03)193
- 巧用箭头函数和 map 方法:将数组元素轻松翻倍!(阿里通义 | 178点数解答 | 2024-10-29 09:35:26)197
- 用原生 JS 和 ECMA 高级语法打造带添加删除功能的品牌列表 (字节豆包 | 676点数解答 | 2024-11-18 17:41:17)197
- 原生 JS 与 ECMAScript 高级语法打造可增删的品牌列表(字节豆包 | 602点数解答 | 2024-11-18 18:03:43)203
- 原生 JS 与 ECMA 高级语法打造可增删的品牌列表(字节豆包 | 649点数解答 | 2024-11-18 18:23:25)216