恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Day3 数据结构(3)

  • 首页
  • 资讯中心
  • /
  • Day3 数据结构(3)

相关资讯

Jesse量化交易实战:8.3k Star框架怎么装、怎么回测、怎么防过拟合量化交易 2026/8/18 9:38:40
Java后端面试,如何系统梳理知识体系应对追问 2026/8/18 9:38:40
我用Python开发了一个自动化脚本,省下了每天两小时 2026/8/18 9:38:40

最新资讯

加密音乐如何免费快速转成 MP3/FLAC?Unlock Music Electron 本地解密全攻略
地下管廊管网智能巡检机器人:城市地下空间无人化巡检方案
用 Python 拿通达信行情数据:mootdx 封装库让 A 股数据抓取像查字典一样顺手
汽车行业国五库存回购:供应链风险共担与厂商关系重塑
全新AMG A 45谍照解析:高性能钢炮的设计进化与性能猜想
从uCOS到Flexible Safety RTOS:功能安全RTOS的技术演进与实战解析

今日推荐

数据缺失处理:从MCAR、MAR到MNAR的机制解析与多重插补实践
MAGS-SLAM:多智能体协同3D高斯泼溅SLAM系统解析
LLM智能体记忆管理:基于关键词门控的混合激活机制CAMeR详解

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Day3 数据结构(3)

发布时间:2026/8/18 9:43:40
Day3 数据结构(3) 今天不对是昨天学习了数据结构的双向链表双向循环链表以及顺序栈链表栈还有队列学习中主要有以下几点问题1.在练习双向链表的操作中的删除操作时最开始不理解指针的赋值和指向含义导致我每次以为指针一直是指向结果是赋值操作让下一个的pPre指向前一个就是赋值但是单独拿出来说就是pPre指向前一个节点所以这两个在指针中还是有很强的迷惑性的。2.我觉得在学习中还是要多画一下结构图结合代码一块看就相对容易理解一点硬啃代码迟早会绕晕的3.单向链表是学习整个链表的基础而顺序栈的操作跟顺序表很像链表栈又跟链表很像先进后出其实入栈就是在加入链表元素的时候用头插法出栈就是每次将数据返回后将空间释放掉但是头节点不能释放掉队列就像排队一样讲究先来后到先进先出。4.下面是一些双向链表的操作#includedoulist.h #includestdio.h #includestdlib.h #includestring.h Node_t *CreatEmptyDouList(void) { Node_t *TempNode NULL; TempNode malloc(sizeof(Node_t)); if(TempNode NULL) { printf(malloc failed\n); return NULL; } TempNode-pNext NULL; TempNode-pPre NULL; return TempNode; } int InsertHeadDouList(Node_t *pTempList,DataType TempData) { Node_t *pTempNode NULL; pTempNode malloc(sizeof(Node_t)); if(pTempNode NULL) { printf(malloc failed\n); return -1; } pTempNode-Data TempData; pTempNode-pNext pTempList-pNext; pTempNode-pPre pTempList; pTempNode-pPre-pNext pTempNode; if(pTempNode-pNext ! NULL) { pTempNode-pNext-pPre pTempNode; } return 0; } int ShowDouList(Node_t *pTempList) { Node_t *pTempNode NULL; pTempNode pTempList-pNext; while(pTempNode ! NULL) { printf(%d ,pTempNode-Data); pTempNode pTempNode-pNext; } printf(\n); return 0; } int DeleteDouList(Node_t *pTempList,DataType TempData) { Node_t *pTempNode NULL; Node_t *pFreeNode NULL; int cnt 0; pTempNode pTempList-pNext; while(pTempNode ! NULL) { if(pTempNode-Data TempData) { pTempNode-pPre-pNext pTempNode-pNext; if(pTempNode-pNext ! NULL) { pTempNode-pNext-pPre pTempNode-pPre; } pFreeNode pTempNode; pTempNode pTempNode-pNext; free(pFreeNode); pFreeNode NULL; cnt; } else { pTempNode pTempNode-pNext; } } return cnt ; }5.下面是顺序栈的一些操作#include seqstack.h #include stdio.h #include string.h #include stdlib.h Stack_t *CreateSeqStack(int Len) { Stack_t *pTmpStack NULL; //1.申请标签空间 pTmpStack malloc(sizeof(Stack_t)) ; //2.对标签元素赋值 pTmpStack-tLen Len; pTmpStack-Top 0; //3.申请存放数据的空间 pTmpStack-pData malloc(Len * sizeof(DataType)); return pTmpStack; } int IsEmptySeqStack(Stack_t *pTmpStack) { //1.返回clen 0 return pTmpStack-Top 0 ? 1:0; } int IsFullSeqStack(Stack_t *pTmpStack) { //1.返回tlen clen return (pTmpStack-tLen pTmpStack-Top) ? 1:0; } int PushSeqStack(Stack_t *pTmpStack, DataType TmpData) { if(IsFullSeqStack(pTmpStack)) { return -1; } //1.将数据存放在栈针对应的位置 pTmpStack-pData[pTmpStack-Top] TmpData; //2.栈针 pTmpStack-Top; return 0; } DataType PopSeqStack(Stack_t *pTmpStack) { if(IsEmptySeqStack(pTmpStack)) { return -1; } //1.栈针-- (pTmpStack-Top)--; //2.返回栈顶元素 return pTmpStack-pData[pTmpStack-Top]; } int DestroySeqStack(Stack_t **ppTmpStack) { //1.释放存放数据的空间 free((*ppTmpStack)-pData); (*ppTmpStack)-pData NULL; //2.释放存放标签的空间 free(*ppTmpStack); *ppTmpStack NULL; return 0; }6.下面是链式栈的一些操作#includelinkstack.h #includestdio.h #include string.h #include stdlib.h Node_t *CreateLinkStack(void) { //1.申请空白节点 Node_t *pTmpNode NULL; pTmpNode malloc(sizeof(Node_t)); if(pTmpNode NULL) { printf(malloc failed\n); return NULL; } //2.空白节点的pNext赋值 pTmpNode-pNext NULL; //3.返回空白节点的地址 return pTmpNode; } int IsEmptyLinkStack(Node_t *pTmpStack) { return pTmpStack-pNext NULL ? 1:0; } int PushLinkStack(Node_t *pTmpStack, DataType TmpData) { //1.申请空间 Node_t *pTmpNode NULL; pTmpNode malloc(sizeof(Node_t)); if(pTmpNode NULL) { printf(malloc failed\n); return -1; } //2.按照头插法完成节点插入 pTmpNode-Data TmpData; pTmpNode-pNext pTmpStack-pNext; pTmpStack-pNext pTmpNode; return 0; } DataType PopLinkStack(Node_t *pTmpStack) { DataType TempData 0; Node_t *pTmpNode NULL; Node_t *pFreeNode NULL; pFreeNode pTmpNode pTmpStack-pNext; //1.判断栈是否为空 if(IsEmptyLinkStack(pTmpStack)) { return -1; } //2.移除空白节点的后一个节点 TempData pTmpNode-Data; pTmpNode pTmpNode-pNext; free(pFreeNode); pTmpStack-pNext pTmpNode; return TempData; //3.获得节点的数据 //4.销毁节点 //5.返回数据值 } int DestroyLinkStack(Node_t **ppTmpStack) { Node_t *pTmpNode1 NULL; Node_t *pTmpNode2 NULL; pTmpNode2 pTmpNode1 *ppTmpStack; while(pTmpNode1 ! NULL) { pTmpNode1 pTmpNode1-pNext; free(pTmpNode2); pTmpNode2 pTmpNode1; } *ppTmpStack NULL; return 0; }7.下面是链式队列的一些操作#includelinkqueue.h #includestdio.h #includestring.h #includestdlib.h Node_t *CreatEmptyLinkQueue(void) { Node_t *pTempNode NULL; pTempNode malloc(sizeof(Node_t)); if(pTempNode NULL) { printf(malloc failed\n); return NULL; } pTempNode-pNext NULL; return pTempNode; } int IsEmptyLinkQueue(Node_t *pTempQueue) { return pTempQueue-pNext NULL ? 1:0; } int EnterQueue(Node_t *pTempQueue,DataType TempData) { Node_t *pTempNode NULL; pTempNode malloc(sizeof(Node_t)); if(pTempNode NULL) { printf(malloc failed\n); return -1; } pTempNode-Data TempData; while(pTempQueue-pNext ! NULL) { pTempQueue pTempQueue-pNext; } pTempNode-pNext pTempQueue-pNext; pTempQueue-pNext pTempNode; return 0; } DataType DeleteQueue(Node_t *pTempQueue) { Node_t *pTempNode NULL; Node_t *pFreeNode NULL; DataType TempData; if(IsEmptyLinkQueue(pTempQueue)) { return -1; } pFreeNode pTempNode pTempQueue-pNext; TempData pTempNode-Data; pTempNode pTempNode-pNext; pTempQueue-pNext pTempNode; free(pFreeNode); pFreeNode pTempNode; return TempData; } int DestoryLinkQueue(Node_t **ppTempQueue) { Node_t *pTempNode NULL; Node_t *pFreeNode NULL; pTempNode pFreeNode *ppTempQueue; while(pTempNode ! NULL) { pTempNode pTempNode-pNext; free(pFreeNode); pFreeNode pTempNode; } *ppTempQueue NULL; return 0; }对于我的收获我觉得对数据结构又有了更深的认识并且在指针操作上逐渐熟悉以前不知道指针怎么使用现在可以明白指针的用法及代码中的含义还有就是可以自己独立写出一些数据结构的操作。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号