- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安科技大学《计算机软件基础》课件 第二章线性链表及其运算(2.3)
回 顾 上节课 队列的概念。 队列和栈的异同 队列的基本操作 入队运算、出对运算的基本流程 队列的应用 在计算机软件设计中,队列的应用是很普遍的,典型应用为: 操作系统的作业排队,输入输出缓冲区采用队列结构 给工人分配工作的模拟 汽车加油站的工作模拟 2. 3 线性链表及其运算 线性链表 循环链表 链队列 线性表顺序结构使用的缺陷 当添加和删除数据元素时,其他表数据将产生移位操作,工作量大; 当存储空间满时,继续添加数据元素将产生上溢出; 当存储空间空时,继续删除数据元素将产生下溢出; 静态存储数据,在一些应用中使用不便。 在实际应用中,往往是同时多线性表共享空间,对空间分配存在难题 线性表链式存储结构 存储结点 假设数据结构中的每一个数据结点对应一个存储单元,这种存储单元称为存储节点,简称节点。 存储方式 两部分组成: 1.存储数据元素的部分,称为数据域 2.存放指针的地方,称为指针域 2. 3.1 线性链表及其运算 线性链表(单链表):每个结点只有一个指针域,这个指针域只能找到后件结点,但不能找到前件结点(带链的栈和带链的队列) 循环链表:收尾相接的单链表。 双向链表:每个结点设置两个指针,一个指向前件结点,一个指向后件结点。 1. 线性链表逻辑结构 线性链表的结点(NODE) 线性链表结构: 2. 线性链表的存储结构 线性链表的特点: 将存储空间分为若干小块,每一小块占若干字节,改小块称为存储结点 每一存储结点包括数据域及指针域 各数据结点的存储序号不连续。 存储结点序号与逻辑关系不一致 存在一个HEAD指针指向第一个元素的结点 最后一个元素没有后件,常用NULL表示 3. 链表的基本操作—插入与删除 4. 线性链表结点C语言描述 typedef struct Linear_chain_node { int data; struct Linear_chain_node *link; } NODE; Struct Linear_chain_node { int data; struct Linear_chain_node *link; }; typedef struct Linear_chain_node NODE; 5. 线性链表运算—建立 建立n个元素线性链表,结点数据由键盘输入 6. 线性链表运算—查找 在链表中查找值为x的结点 NODE *findnode(NODE *head, int x) { NODE *p; p=head; while ((p!=NULL)(p-data!=x)) p=p-link; if (p-data==x) return (p); return (NULL); } 1. 链队列的使用 如果队列的容量无法预先估计时,可以采用链表存储结构 2.链队列结点及front和rear指针 链队列结点 typedef struct node { elemtype data; struct node *link; } NODE, *NODEPTR; front和rear指针 typedef struct { NODEPTR front, rear; } LINKQUEUE; 3 链队列运算—初始化 链队列的初始化 void InitQueue (LINKQUEUE *q) { q-front=NULL; q-rear=NULL; } 链队列的判空: int QueueIsEmpty (LINKQUEUE *q) { if (q-front==NULL) (q-rear==NULL) return (1); return (0); } 4. 链队列运算—入队 void AddQueue (LINKQUEUE *q, elemtype e) { NODEPTR p; p=(NODEPTR)malloc(sizeof(NODEPTR)); p-data=e; p-link=NULL; if (QueueIsEmpty (q) ) { q-front=p; q-rear=p; }else { q-rear-link=p; q-rear=p; } } 5. 链队列运算—出队 int DelQueue (LINKQUEUE *p, elemtype *y) { N
您可能关注的文档
最近下载
- 《GB50242-2016建筑给排水及采暖工程施工质量验收规范(条文说明)》.pdf
- 《严格规范涉企行政检查》专题讲座.pptx VIP
- 最高法院第一巡回法庭关于行政审判法律适用若干问题的会议纪要.pdf VIP
- 七年级的道德与法制下册知识点.doc VIP
- 2025年高考语文课内文言文知识梳理(统编版)《子路、曾皙、冉有、公西华侍坐》(原卷版).pdf VIP
- 苏教版初中数学八年级下册《反比例函数》单元检测试卷及参考答案.pdf VIP
- 厂区零星工程施工方案(3篇).docx VIP
- 应急管理部关于严格规范安全生产执法行为的通知专题宣贯学习.pptx VIP
- 2025年全国保密教育线上培训考试题(含答案).docx VIP
- 七年级上册《道德与法制》知识点归纳.docx VIP
文档评论(0)