第 4 章 数据结构.ppt
《第 4 章 数据结构.ppt》由会员分享,可在线阅读,更多相关《第 4 章 数据结构.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,第 1 章 数据结构,1.1 基本数据结构与算法 1.2 线性表 1.3 栈和队列1.4 树和二叉树 1.5 查找1.6 内部排序,姓名 学号 成绩 班级 李红 9761059 95 机97.6,10,65,865,一叠书或一叠盘子。,栈顶,栈底,a1,栈s=(a1,a2,,an),a2,an-1,an,一种操作受限的线性表,只允许在表的一端进行插入和删除,1.栈的定义,定义:只允许在线性表的一端进行插入和删除的线性表。,与栈有关的相关术语:,1.3栈和队列,(1)栈顶: 允许插入与删除的一端称为栈顶(2)栈底: 不允许插入与删除的一端称为栈底(3)入栈:栈的插入操作(往栈中插入一个元素)(
2、4)出栈:栈的删除操作(从栈中删除一个元素)(5)栈空: top=0(6)栈满: top=m(m为栈最大容量),进栈,出栈,栈顶,栈底,假设栈:s=(a1,a2,,an),1.3.1 栈,栈空:top=-1,栈示意图:,修改栈的原则:(考点)先进后出(FILO, First In Last Out)或后进先出(LIFO),栈顶元素总是最后入栈,而最先出栈的栈底元素总是最先入栈,而最后出栈的,堆栈操作,出栈元素顺序: B C D A,1.栈的定义,1.3栈和队列,1.3.1 栈,2.顺序栈及其运算,1)栈的两种存储结构,顺序存储结构:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。链式
3、存储结构:用于收集计算机存储器中所有空闲存储空间,来保存自栈底到栈顶的数据元素。,顺序栈:顺序存储结构的栈称为顺序栈。链栈:链式存储结构栈称为链栈。,进栈,A,出栈,栈满,B,C,D,E,F,设数组维数为Mtop=0,栈空,此时出栈,则下溢(underflow)top=M,栈满,此时入栈,则上溢(overflow),栈空,顺序栈实现:一维数组dataM,注意:数组是倒过来图示的。故,top指向的是其箭头上面的存储空间,顺序栈实现:一维数组dataM,栈顶指针并不一定是指针变量,也可以是下标变量,#define SIZE 50typedef struct char dataSIZE; int t
4、op; SeqStack;,/*置栈空*/ void InitStack(SeqStack *S) S-top=0; ,/* 进栈*/void Push(SeqStack *S,char x) if (StackFull(S) printf(“Stack overflow”); /上溢,退出运行 exit(0) ; S-dataS-top=x;/将x入栈 S-top=S-top+1; /栈顶指针加1 ,/* 出栈*/char Pop(SeqStack *S) if(StackEmpty(S) printf(“Stack underflow”); /下溢,退出运行 exit(0); S-top=
5、S-top-1; /将栈顶指针减1 return S-dataS-top; /栈顶元素返回 ,top=0,栈空,A,top=1,假设:调用两次Push函数 Push( S, A);Push(S, B);,top=2,B,假设:调用一次Pop函数 Pop( S);,1.栈的定义,1.3栈和队列,1.3.1 栈,2.顺序栈及其运算,1)栈的两种存储结构,2)顺序栈的基本运算: 入栈、出栈与读栈顶元素,(1)入栈,新元素插入到栈顶指针指向位置栈顶指针top加1,步骤:,注意: 栈顶指针指向存储空间最后一个位置时,栈已满,不能再入栈。称为栈“上溢”错误.,栈空:top=0,思考:当栈空条件为:top=
6、-1时,入栈步骤,1.栈的定义,1.3栈和队列,1.3.1 栈,2.顺序栈及其运算,1)栈的两种存储结构,2)顺序栈的基本运算: 入栈、出栈与读栈顶元素,(2)出栈,步骤:,栈顶指针top减1栈顶元素赋给一个指定的变量,栈顶指针为0时,栈空,不能再退栈。称为栈“下溢”错误,1.栈的定义,1.3栈和队列,1.3.1 栈,2.顺序栈及其运算,1)栈的两种存储结构,2)顺序栈的基本运算: 入栈、出栈与读栈顶元素,(3)读栈顶元素,概念:将栈顶元素赋给一个指定变量,注意:不删除栈顶元素,栈顶指针不会改变,1.栈的定义,1.3栈和队列,1.3.1 栈,2.顺序栈及其运算,1)栈的两种存储结构,2)顺序栈
7、的基本运算:,3)栈的典型应用,进制的转换,139,10001011,(139)10=(10001011)2,除余倒序法,(139)10(?)2,139,除余倒序法,(139)10(?)2,1,1,0,1,0,0,0,1,余数栈,定义:指允许在一端插入,而在另一端进行删除的线性表。,与队列有关的相关术语:(1)队尾:允许插入的一端称为队尾。 rear队尾指针,指向队尾元素的下一个位置(2)队头:允许进行删除的一端称为队头。 front队头指针,指向队头元素。(3)入队列:队列插入操作(进队列)(4)出队列:队列的删除操作(退队列)(5)空队列:队列中无数据元素,1.3栈和队列,1.3.2 队列
8、,定义:指允许在一端插入,而在另一端进行删除的线性表。,队列结构示意图:队列Q=(a1,a2, , an ),1.3栈和队列,1.3.2 队列,队列修改原则:先进先出(FIFO)或后进后出(LILO),队头元素总是最先进队列的,也总是最先出队列队尾元素总是最后进队列,也是最后出队列,新来的成员总是加入队尾(即不允许加塞),每次离开的成员总是队列头上的(不允许中途离队),即当前最老的成员离队。,定义:指允许在一端插入,而在另一端进行删除的线性表。,1.3栈和队列,1.3.2 队列,2.链队列: 用链表表示的队列。,Q.front,Q.rear,具有n个元素的队列,structqueueNodei
9、ntdata;/存放数据元素structqueueNode*next;/指向下一个结点;structqueuestructqueueNode*front;structqueueNode*rear;struct queue *Q;,void InitQueue(structqueue *q) /初始化队列 structqueueNode*node; node=(structqueueNode*)malloc(sizeof(structqueueNode); node-next=NULL; q-front=node; q-rear=node;,node,q.front,q.rear,带头结点的空队
10、列,/入队列voidAddQueue(structqueue*q,inte)structqueueNode*node;node=(structqueueNode*)malloc(sizeof(structqueueNode);node-data=e;node-next=NULL;q-rear-next=node;q-rear=node;,q.front,q.rear,1,又调用一次,node,/入队列voidAddQueue(structqueue*q,inte)structqueueNode*node;node=(structqueueNode*)malloc(sizeof(structqu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构
限制150内