知识大全 栈和队列 - 栈 - 链栈

Posted 结点

篇首语:赋料扬雄敌,诗看子建亲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 栈和队列 - 栈 - 链栈相关的知识,希望对你有一定的参考价值。

  链栈

  栈的链式存储结构称为链栈

   链栈的类型定义

  链栈是没有附加头结点的运算受限的单链表 栈顶指针就是链表的头指针

  

>

  链栈的类型说明如下

  typedef struct stacknode

  DataType data

  struct stacknode *next

  StackNode;

  typedef struct

  StackNode *top; //栈顶指针

  LinkStack;

  注意

  ①LinkStack结构类型的定义是为了方便在函数体中修改top指针本身

  ②若要记录栈中元素个数 可将元素个数属性放在LinkStack类型中定义

   链栈的基本运算

  ( ) 置栈空

  Void InitStack(LinkStack *S)

  

  S >top=NULL;

  

  ( ) 判栈空

  int StackEmpty(LinkStack *S)

  

  return S >top==NULL;

  

  ( ) 进栈

  void Push(LinkStack *S DataType x)

  //将元素x插入链栈头部

  StackNode *p=(StackNode *)malloc(sizeof(StackNode));

  p >data=x;

  p >next=S >top;//将新结点*p插入链栈头部

  S >top=p;

  

  ( ) 退栈

  DataType Pop(LinkStack *S)

  

  DataType x;

  StackNode *p=S >top;//保存栈顶指针

  if(StackEmpty(S))

  Error( Stack underflow ); //下溢

  x=p >data; //保存栈顶结点数据

  S >top=p >next; //将栈顶结点从链上摘下

  free(p);

  return x;

  

  ( ) 取栈顶元素

  DataType StackTop(LinkStack *S)

  

  if(StackEmpty(S))

  Error( Stack is empty )

  return S >top >data;

  

  注意

  链栈中的结点是动态分配的 所以可以不考虑上溢 无须定义StackFull运算

cha138/Article/program/sjjg/201311/23927

相关参考

知识大全 栈和队列 - 栈 - 栈的定义及基本运算

  栈和队列是两种特殊的线性表它们的逻辑结构和线性表相同只是其运算规则较线性表有更多的限制故又称它们为运算受限  的线性表栈和队列被广泛应用于各种程序设计中  栈的定义及基本运算  栈的定义  栈(S

知识大全 数据结构复习总结第三章栈和队列

  第三章栈和队列  栈  栈的定义及基本运算  栈是限制仅在表的一端进行插入和删除运算的线性表又称为后进先出表(LIFO表)插入删除端称为栈顶另一端称栈底表中无元素称空栈基本运算有  )initst

知识大全 数据结构第三章(栈和队列)串讲+复习要点

  第三章栈和队列  本章介绍的是栈和队列的逻辑结构定义及在两种存储结构(顺序存储结构和链式存储结构)上如何实现栈和队列的基本运算本章的重点是掌握栈和队列在两种存储结构上实现的基本运算难点是循环队列中

知识大全 数据结构考研分类复习真题 第三章 栈和队列[12]

  .在作进栈运算时应先判别栈是否_()_;在作退栈运算时应先判别栈是否_()_当栈中元素为n个作进栈运算时发生上溢则说明该栈的最大容量为_()_为了增加内存空间的利用率和减少溢出的可能性由两个栈共享

知识大全 第3章栈和队列习题练习

一基础知识题设将整数依次进栈但只要出栈时栈非空则可将出栈操作按任何次序夹入其中请回答下述问题  ()若入出栈次序为Push()Pop()Push()Push()Pop()Pop()Push()Pop(

知识大全 第3章栈和队列习题练习答案

设将整数依次进栈但只要出栈时栈非空则可将出栈操作按任何次序夹入其中请回答下述问题   ()若入出栈次序为Push()Pop()Push()Push()Pop()Pop()Push()Pop(

知识大全 数据结构考研分类复习真题 第三章 栈和队列[20]

  利用两个栈sls模拟一个队列时如何用栈的运算实现队列的插入删除以及判队空运算请简述这些运算的算法思想【北京邮电大学 一】【东南大学一(分)】  .一个循环队列的数据结构描述如下【西北工业

知识大全 数据结构考研分类复习真题 第三章 栈和队列[22]

  五算法设计题  设有两个栈SS都采用顺序栈方式并且共享一个存储区[Omaxsize]为了尽量利用空间减少溢出的可能可采用栈顶相向迎面增长的存储方式试设计SS有关入栈和出栈的操作算法【哈尔滨工业大学

知识大全 数据结构考研分类复习真题 第三章 栈和队列[16]

  设一数列的输入顺序为若采用堆栈结构并以A和D分别表示入栈和出栈操作试问通过入出栈操作的合法序列【北方交通大学 一(分)】  ()能否得到输出顺序为的序列(分)  ()能否得到输出顺序为的

知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(一)

  栈和队列的应用非常之广只要问题满足后进先出和先进先出原则均可使用栈和队列作为其数据结构  栈的应用  数制转换  将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题很容易通过除B取余