浅析队列、栈的应用.docVIP

  • 5
  • 0
  • 约5.54千字
  • 约 6页
  • 2017-05-28 发布于北京
  • 举报
学期论文2 专 业: 计算机科学与技术_______ 班 级: U计算机111__________ 学 号: 1111503111_________ _ 姓 名: 于秀芳_________ _ 指导教师: 孟敏 ________ __ 完成日期: 2012年11月29日_____ _ ? ? ? 浅析队列、栈的应用 于秀芳 (盐城工学院 优集学院 江苏盐城 224051) 摘要:栈和队列是两种常用的数据结构,广泛应用在操作系统、编译程序等各种软件系统中。从数据结构角度看,栈和队列是操作受限的线性表,栈和队列的数据元素具有单一的前驱和后继的线性关系;从抽象数据类型角度看,栈和队列又是两种重要的抽象数据类型。 关键词:栈和队列;数据结构;编译程序 Analysis Of The Queue, Stack Of Applications YuXiuFang (UGS College, Yancheng Institute of Technology, Yancheng, Jiangsu 224051) Abstract: Stacks and queues are two common data structure widely used operating systems, compilers and other software systems .From the perspective of data structure, stack and queue operation is constrained linear list, stack and queue data elements having a single precursor and successor linear relationship;From the perspective of abstract data types, stacks and queues are two kinds of important abstract data type. Key words: Stack and queue ;Data structure; Compiler program 0引言: 目前我们所学的数据结构包括上学期学过的C++都运用到了栈,队列。 1 栈的逻辑结构 1.1栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。 栈中元素除了具有线性关系外,还具有后进先出的特性。 1.2栈的顺序存储结构及实现 1.2.1栈的顺序存储结构 栈的顺序存储结构称为顺序栈。 顺序栈本质上是顺序表的简化,唯一需要确定的是用数组的那一端表示栈底。通常把数组中下标为0的一端作为栈底,同时附设指针top指示栈顶元素在元组中的位置。设存储栈元素的数组长度为StackSize,则栈空时栈顶指针 top=-1;栈满时栈顶指top=StackSize-1。入栈时,栈顶指针top加1;出栈时,栈顶指针top减1。 1.2.2顺序栈的实现 (1)栈的初始化 初始化一个空栈只需将栈顶指针top置为1。 (2)入栈操作 Templateclass DataType Void SeqStackDataType::Push(DataType x) { If(top==StackSize-1)throw”上溢”; data[++top]=x; } (3)出栈操作 Templateclass DataType Void SeqStackDataType::Pop() { If(top==-1)throw”上溢”; x=data[top--]; return x; } 1.2.3两栈共享空间 在一个程序中如果需要同时使用具有相同数据类型的两个栈时,最直接的方法是为每一个栈开辟一个数组空间,同时另一个栈的空间仍有大量剩余而没有得到利用的情况,从而造成存储空间的浪费。一种可取的方法是充分利用顺序栈单向延伸的特性,使用一个数组来存储两个栈,让一个栈的栈底为该数组的始端,另一个栈的栈底为该数组的末端,每个栈从各自的端点向中间延伸。 1.3栈的链接存储结构及实现 1.3.1栈的链接存储结构 栈的链接存储结构称为链栈。 通常链栈用单链表表示,因此其节点结构与单链表的节点结构相同。因为只能在栈顶执行插入和删除操作,显然以单链表的头部做栈顶是最方便的,

文档评论(0)

1亿VIP精品文档

相关文档