news 2026/6/25 14:00:58

数据结构(栈和队列)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构(栈和队列)

一、栈

用数组实现栈

#include <stdio.h> #define MaxSize 5 typedef struct Stack{ int data[MaxSize]; int pre; }Stack; //初始栈 void Init(Stack *stack){ stack->pre = -1; } //入栈操作 void Push(Stack *stack,int x){ //判断栈是否已满 if(stack->pre == MaxSize-1){ printf("栈已满\n"); return; } stack->pre = stack->pre+1;//指针向上走一位 stack->data[stack->pre] = x; } //出栈操作 void Pop(Stack *stack){ if(stack->pre == -1){ printf("栈已空\n"); return; } printf("%d\n",stack->data[stack->pre]); stack->pre = stack->pre-1; } int main() { Stack stack; Init(&stack); Push(&stack,5); Push(&stack,7); Push(&stack,4); Push(&stack,2); Pop(&stack); Pop(&stack); Pop(&stack); Pop(&stack); return 0; }

用链表实现栈

#include <stdio.h> #include <stdlib.h> typedef struct Node{ int data; struct Node *next; }LinkNode; //初始化链表(栈)的头节点 void Init(LinkNode *node){ node->next = NULL;//头节点的next初始化为NULL,表示栈为空 } //入栈操作(在链表头部插入新节点) void Push(LinkNode *head,int value){ //创建新的节点 LinkNode *newNode = (LinkNode *)malloc(sizeof(LinkNode)); newNode->data = value; newNode->next = NULL; //将新节点插入到头部(栈顶) newNode->next = head->next; head->next = newNode; } //出栈操作(删除链表头部节点并打印其值) void Pop(LinkNode *head){ if(head->next == NULL){//栈为空是直接返回 return; } LinkNode *temp = head->next;//临时保存栈顶节点 printf("%d\n",temp->data);//打印栈顶元素 head->next = temp->next;//移除栈顶节点 free(temp); } int main() { LinkNode *head = (LinkNode *)malloc(sizeof(LinkNode));//为头节点分配内存 Init(head);//初始化头节点 Push(head,1); Push(head,2); Push(head,3); Pop(head); Pop(head); return 0; }

二、队列

用数组实现队列

#include <stdio.h> #define MaxSize 5 typedef struct Queue{ int arr[MaxSize]; int r; //出 int p; //入 }Queue; void init(Queue *queue){ queue->r = -1; queue->p = -1; } //数据添加 void insert(Queue *queue,int value){ if(queue->p - queue->r == MaxSize){ printf("队列已满\n"); return; } queue->p= queue->p+1; queue->arr[queue->p] = value; } //取出数据 void chu(Queue *queue){ if(queue->p - queue->r == 0){ printf("队列已空\n"); return; } queue->r= queue->r+1; printf("%d\n",queue->arr[queue->r]); } int main(){ Queue queue; init(&queue); insert(&queue,5); insert(&queue,7); insert(&queue,4); insert(&queue,2); insert(&queue,0); insert(&queue,3); chu(&queue); chu(&queue); chu(&queue); chu(&queue); chu(&queue); chu(&queue); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 14:46:25

50、IP 路由中的关键操作与机制解析

IP 路由中的关键操作与机制解析 1. 路由信息相关结构 在 IP 路由中,存在一些重要的结构用于传递和存储关键信息,以下是这些结构的详细介绍: | 结构名称 | 含义 | | ---- | ---- | | rta_iif | 输入内部网络接口 | | rta_oif | 输出网络接口 | | rta_gw | 包含网关 IP…

作者头像 李华
网站建设 2026/6/24 12:04:05

53、Linux网络中的IP路由与服务质量管理

Linux网络中的IP路由与服务质量管理 1. IP路由概述 IP路由的主要作用是为计算机之间的数据包传输确定最佳路径,这一过程由IP层负责处理。IP路由主要具备两个核心功能: 1. 路由器中的IP数据包转发 :确保数据包在路由器之间正确传输。 2. 识别网络间每个数据包传输的最…

作者头像 李华
网站建设 2026/6/26 0:30:15

云计算+大数据+IoT:构建企业数字化底座的三大支柱

数字化转型不是空中楼阁&#xff0c;其根基在于坚实、灵活、可扩展的数字化底座。在众多技术要素中&#xff0c;云计算、大数据与物联网&#xff08;IoT&#xff09;构成了企业数字化基础设施的“铁三角”。三者相辅相成&#xff0c;共同支撑起从数据采集到智能决策的完整价值链…

作者头像 李华
网站建设 2026/6/24 21:32:20

AI大模型如何重塑企业数字化转型路径

在新一轮科技革命与产业变革加速演进的背景下&#xff0c;人工智能大模型&#xff08;Large AI Models&#xff09;正成为驱动企业数字化转型的核心引擎。不同于传统的数字化工具&#xff0c;大模型凭借其强大的泛化能力、语义理解力和生成能力&#xff0c;正在从“效率提升”走…

作者头像 李华
网站建设 2026/6/24 9:29:07

好写作AI:别争了!让规则派和生成派握手言和的“混合双打”来了

当你让AI写一份项目报告&#xff0c;它文采飞扬但漏了关键数据&#xff1b;当你要求它严格按模板生成合同&#xff0c;它格式精准却读起来像上世纪产物——这背后&#xff0c;是AI写作“规则派”与“生成派”多年的“门派之争”。而好写作AI的混合神经网络模型&#xff0c;正是…

作者头像 李华