C语言堆栈与队列实战教程,新手必看,数组与链表实现详解
本教程系统讲解 C语言堆栈与队列的操作方法与实战技巧,适合初学者和进阶开发者学习。内容涵盖堆栈(栈)和队列的定义、数组与链表实现、基本操作、进阶应用及实战案例,帮助你快速掌握数据结构核心操作,提高程序开发效率和代码可维护性。
正文教程
一、堆栈(栈)操作
栈的定义与数组实现
#include <stdio.h>
#define MAX 100
int stack[MAX];
int top = -1;
void push(int value){
if(top < MAX - 1) stack[++top] = value;
else printf("栈已满 ");
}
int pop(){
if(top >= 0) return stack[top--];
else { printf("栈为空 "); return -1; }
}
栈操作演示
push(10);
push(20);
printf("弹出元素:%d ", pop());
技巧:
栈先进后出(LIFO),常用于表达式计算、函数调用回溯等
使用数组实现简单快速,链表实现可动态扩展
二、队列操作
队列定义与数组实现
#define MAX 100
int queue[MAX];
int front = 0, rear = 0;
void enqueue(int value){
if(rear < MAX) queue[rear++] = value;
else printf("队列已满 ");
}
int dequeue(){
if(front < rear) return queue[front++];
else { printf("队列为空 "); return -1; }
}
队列操作演示
enqueue(10);
enqueue(20);
printf("出队元素:%d ", dequeue());
技巧:
队列先进先出(FIFO),适用于任务调度、缓存处理
可以使用循环队列优化空间利用率
三、链表实现堆栈与队列
链表栈实现
typedef struct Node{
int data;
struct Node* next;
} Node;
Node* topNode = NULL;
void pushNode(int value){
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = topNode;
topNode = newNode;
}
int popNode(){
if(topNode == NULL) return -1;
Node* temp = topNode;
int value = temp->data;
topNode = topNode->next;
free(temp);
return value;
}
链表队列实现
typedef struct QNode{
int data;
struct QNode* next;
} QNode;
QNode *frontNode = NULL, *rearNode = NULL;
void enqueueNode(int value){
QNode* newNode = (QNode*)malloc(sizeof(QNode));
newNode->data = value; newNode->next = NULL;
if(rearNode) rearNode->next = newNode;
rearNode = newNode;
if(frontNode == NULL) frontNode = rearNode;
}
int dequeueNode(){
if(frontNode == NULL) return -1;
QNode* temp = frontNode;
int value = temp->data;
frontNode = frontNode->next;
if(frontNode == NULL) rearNode = NULL;
free(temp);
return value;
}
技巧:
链表实现动态扩展,适合元素数量不固定的场景
注意释放节点内存,避免内存泄漏
四、实战案例
示例项目:表达式计算器与任务调度
使用栈实现中缀表达式转后缀表达式
使用栈计算后缀表达式结果
使用队列管理任务队列,实现先进先出处理
使用链表优化动态任务插入和删除
技巧:
模块化封装操作函数,提高代码复用性
堆栈与队列结合使用,可处理复杂业务逻辑
五、总结
通过本教程,你掌握了 C语言堆栈与队列的操作技巧,包括数组与链表实现、基本操作、进阶应用及实战项目。新手可快速上手基础堆栈与队列操作,进阶用户可构建高效、可维护的程序,提高数据处理能力和开发效率。