问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

数据结构复习总结第三章栈和队列

发布网友 发布时间:2023-06-26 03:42

我来回答

1个回答

热心网友 时间:2024-03-04 06:30

  第三章栈和队列

   栈

   栈的定义及基本运算

  栈是*仅在表的一端进行插入和删除运算的线性表又称为后进先出表(LIFO表) 插入 删除端称为栈顶 另一端称栈底 表中无元素称空栈 基本运算有

   ) initstack(s) 构造一个空栈;

   ) stackempty(s) 判栈空;

   ) stackfull(s) 判栈满;

   ) push(s x) 进栈;

   ) pop (s) 退栈;

   ) stacktop(s) 取栈顶元素

   顺序栈

  栈的顺序存储结构称顺序栈 顺序栈的类型定义为

  #define stacksize

  typedef char datatype;

  typedef struct{

  datatype data[stacksize];

  int top;

  }seqstack;

  当栈满时 做进栈运算必定产生空间溢出 称 上溢 当栈空时 做退栈运算必定产生空间溢出 称 下溢 上溢是一种错误应设法避免 下溢常用作程序控制转移的条件

  在顺序栈上的基本运算

   ) 置空栈

  Void initstack(seqstack *s)

  {

  s >top= ;

  }

   )判栈空

  int stackempty(seqstack *s)

  {

  return s >top== ;

  }

   )判栈满

  int stackfull(seqstack *s)

  {

  return s >top==stacksize ;

  }

   )进栈

  Void push(seqstack *s datatype x)

  {

  if(stackfull(s))

  error( stack overflow );

  s >data[++s >top]=x;

  }

   )退栈

  Datatype pop(seqstack *s)

  {

  if(stackempty(s))

  error( stack underflow );

  return S >data[s >top ];

  }

   )取栈顶元素

  Dtatatype stacktop(seqstack *s)

  {

  if(stackempty(s))

  error( stack underflow );

  return S >data[s >top];

  }

   链栈

  栈的链式存储结构称链栈 栈顶指针是链表的头指针 链栈的类型定义

  typedef struct stacknode{

  datatype data;

  struct stacknode *next;

  }stacknode;

  typedef struct{

  stacknode *top;

  }linkstack;

  链栈上的基本运算

   ) 建栈

  Void initstack(linkstack *s)

  {

  s >top=NULL;

  }

   )判栈空

  Int stackempty (linkstack *s)

  {

  return s >top==NULL;

  }

   ) 进栈

  Void push(linkstack *s datatype x)

  {

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

  p >data=x;

  p >next=s >top;

  s >top=p;

  }

   ) 退栈

  Datatype pop(linksatck *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;

  }

   队列

   队列的基本定义和计算

  队列是一种运算受限的线性表 允许删除的一端称队首 允许插入的一端称队尾 队列又称为先进先出线性表 FIFO表

  队列的基本运算

   ) initqueue(q) 置空队;

   ) queueempty(q) 判队空;

   ) queuefull(q) 判队满;

   ) enqueue(q x) 入队;

   ) dequeue(q) 出队;

   ) queuefront(q) 返回队头元素

   顺序队列

  队列的顺序存储结构称顺序队列 设置front和rear指针表示队头和队尾元素在向量空间的位置 顺序队列中存在 假上溢 现象 由于入队和出队操作使头尾指针只增不减导致被删元素的空间无法利用 队尾指针超过向量空间的上界而不能入队

  为克服 假上溢 现象 将向量空间想象为首尾相连的循环向量 存储在其中的队列称循环队列 i=(i+ )%queuesize

  循环队列的边界条件处理 由于无法用front==rear来判断队列的 空 和 满 解决的方法有

   ) 另设一个布尔变量以区别队列的空和满;

   ) 少用一个元素 在入队前测试rear在循环意义下加 是否等于front;

   ) 使用一个记数器记录元素总数

  循环队列的类型定义

  #define queuesize

  typedef char datatype;

  typedef struct{

  int front;

  int rear;

  int count;

  datatype data[queuesize];

  }cirqueue;

   ) 置队空

  Void initqueue(cirqueue *q)

  {

  q >front=q >rear= ;

  q >count= ;

  }

   ) 判队空

  Int queueempty(cirqueue *q)

  {

  return q >count== ;

  }

   ) 判队满

  Int queuefull(cirqueue *q)

  {

  return q >count==queuesize;

  }

   ) 入队

  Void enqueue(cirqueue *q datatype x)

  {

  if(queuefull(q))

  error( queue overfolw );

  q >count++;

  q >data[q >rear]=x;

  q >rear=(q >rear+ )%queuesize;

  }

   ) 出队

  Datatype dequeue(cirqueue *q)

  {

  datatype temp;

  if(queueempty(q))

  error( queue underflow );

  temp=q >data[q >front];

  q >count ;

  q >front=(q >front+ )%queuesize;

  return temp;

  }

   ) 取队头元素

  Datatype queuefront(cirqueue *q)

  {

  if(queueempty(q))

  error( queue is empty );

  return q >data[q >front];

  }

   链队列

  队列的链式存储结构称链队列 链队列由一个头指针和一个尾指针唯一确定

  链队列的定义

  typedef struct queuenode

  {

  datatype data;

  struct queue *next;

  }queuenode;

  typedef struct

  {

  queuenode *front;

  queuenode *rear;

  }linkqueue;

   ) 建空队

  Void initqueue(linkqueue *q)

  {

  q >front=q >rear=NULL;

  }

   ) 判队空

  Int queueempty(linkqueue *q)

  {

  return q >front==NULL&&q >rear==NULL;

  }

   ) 入队

  Void enqueue(linkqueue *q datatype x)

  {

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

  p >data=x;

  p >next=NULL;

  if(queueempty(q))

  q front=q >rear=p;

  else{

  q >rear >next=p;

  q >rear=p;

  }

  }

   ) 出队

  Datatype dequeue(linkqueue *q)

  {

  datatype x;

  queuenode *p;

  if(queueempty(q))

  error( queue is underflow );

  p=q >front;

  x=p >data;

  q >front=p >next;

  if(q >rear==p) q >rear=NULL;

  free(p);

  return x;

  }

   ) 取队头元素

  Datatype queuefront(linkqueue *q)

  {

  if(queueempty(q))

  error( queue is empty );

  return q >front >data;

  }

  附二:

  第三章 栈和队列

  *************************************************************************************

  栈(Stack)是仅*在表的一端进行插入和删除运算的线性表 称插入 删除这一端为栈顶 另一端称为栈底 表中无元素时为空栈 栈的修改是按后进先出的原则进行的 我们又称栈为LIFO表(Last In First Out) 通常栈有顺序栈和链栈两种存储结构

  *************************************************************************************

    声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
    E-MAIL:11247931@qq.com
    踏板摩托车没电了启动技巧 我经常睡觉时梦遗 情人节创意标语 酒店与情人节的宣传标语 为什么热敏电阻有对温度高度敏感的特性? 如何用安卓手机给电脑当摄像头用 用手机充当电脑摄像头的方法怎样用手机与电脑连接充当摄像头 EXCEL表格无法运行宏怎么解决呢 昂科威发动机舱盖电路对蓄电池短路怎么解决,仪表提示检修车辆,发动机报... 黑龙江康辉医疗器械有限公司怎么样? 哈弗h6的行车记录仪怎么查看国潮版 为什么演员张馨予在结婚之后就很少出演影视作品了? 结婚后的张馨予,活成了女人羡慕的样子:养花、种菜、栽果树 张馨予多大结婚 支持安乐死的观点及理由有哪些? 对于安乐死,你有什么看法呢? 你对安乐死持什么样的态度? 如何看待安乐死的问题? 对于安乐死你有什么看法呢? 明日方舟风暴眼是谁明日方舟暴风眼是哪个干员 小鸡是否能洗澡? 你对“安乐死”有什么看法?你支持安乐死吗? ​ 小鸡经常一不小心摔倒在它的屎尿上,很脏,能不能洗澡后吹干 提携观画壁的意思提携观画壁的意思是什么 李西溪村位于哪个省哪个市 电视剧铁核桃在哪里看全集谁知道??? 斗破苍穹漫画已经更新到了159话 那159话在斗破苍穹小说里是第几章 求乙女游戏世界对路人角色很不友好高清视频在线看、分享一下呗_百度知... 恋爱游戏世界对路人角色很不友好男主娶了几个 恋爱游戏世界对路人角色很不友好漫画44话到小说哪里? 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(一) 有胃窦炎,经常胃痛胃涨吃什么药 慢性非萎缩性胃窦炎吃什么药好 明日之后辐射高校第8赛季111-120层技巧攻略 明日之后辐射高校S6赛季必囤物资有哪些? 哈弗supreme停产了吗 结婚男女主席的座次安排是怎样的?男上席的娘家人是:新娘单位的领导2人... 有些小说里,男女主角同居的原因是什么?是男主角进女主角家住,把尽可能... 家庭分工中男女主外有什么利弊? ...叫什么名字了,大意是男主是女主家收养的,男女主深爱着对方 体操运动员用英语怎么说 gymnastics的用法 女朋友说送粑粑怎么回复 谁有六叔公网站发过来吧!要准一点哦!谢谢了 七十二家房客六叔公扮演者 《娇商》txt下载在线阅读全文,求百度网盘云资源 亲属卡限额是多少? 亲属卡额度 一个未接电话,回拨过去却说“该号码目前暂未使用”这是什么意思? 西宁941医院星期六上班吗?
    • 焦点

    最新推荐

    猜你喜欢

    热门推荐