首页 > 编程知识 正文

数据结构栈和队列实验报告总结,数据结构栈和队列实验心得

时间:2023-05-04 13:34:11 阅读:198875 作者:1732

线性表、栈和队列都是线性结构,可以在线性表的任何 位置插入和删除元素;对于栈只能栈顶插入和删除元素;对于队列只在队尾插入元素,并且只在队头删除元素。

栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。不允许插入和删除运算的一端称为栈底

向栈中压入元素的操作是先移动栈顶指针,后存入元素

从栈中弹出元素的操作是先取出元素,后移动栈顶指针

一个递归算法必须包括终止条件和递归部分

栈中元素的进出原则是后进先出

队列的特点是先进先出

将递归算法转换成非递归算法时,通常要借助的数据结构是

在做进栈运算时,应先判别栈是否;在做退栈运算时,应先判别栈是否。当栈中元素为n个,做进栈运算时发生上溢,则说明该栈的最大容量为n。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的栈底分别设在这片内存空间的两端,这样,只有当两个栈的栈顶在达栈空间的某一位置相遇时,才产生上溢。

顺序栈四要素:
栈空的条件:s->top==-1;
栈满的条件:s->top==最大下标-1;
元素进栈操作:先将栈顶指针增1,然后将元素放在栈顶指针处。
出栈操作:先将栈顶指针处的元素取出,然后将栈顶指针减1。

共享栈四要素:
栈空的条件:top1==-1 top2==‘最大下标 。
栈满的条件:s->top==top2-1。
元素进栈操作:进栈1的操作为:top1++;data[top1]=x;进栈2的操作为:top2–;data[top2]=x。
出栈操作:出栈1的操作为:x=data[top1];top1–;出栈2的操作为:x=dara[top2];top2++;

链栈四要素:
栈空的条件:s->next==NULL.
栈满的条件:由于只有内存溢出时才出现栈满,通常看作不存在栈满。
元素进栈操作:新建一个结点存放元素(由p指向它),将结点p插入到头结点之后。
出栈操作:取首结点的data值并将其删除。

顺序队四要素:
队空的条件:q->front== q->rear.
队满的条件:q->rear== 数组最大下标-1.
元素的进队操作:先将rear增1,然后将元素放在rear的位置。
出队操作:先将front增1,然后取出front位置的元素。

链队四要素:
队空的条件:q->rear== NULL(q->front==NULL)
队满的条件:不考虑
元素的进队操作:新建一个结点存放元素(由p指向它),将结点p插入作为尾结点,
出队操作:取出队首结点的data值并将其删除。

一般的一维数组队列的尾指针已经到了数组的上界,不能再有入队操作,但其实数组中还有空位置,这就叫**“假溢出**”

循环队列的引入,目的是为了克服队列的假溢出

在具有n个单元的循环队列中,队满时共有n-1 个元素。

为解决计算机主机与打印机之间的速度不匹配问题,通常设计一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是队列

最适合做链式队列的链表是只带队尾指针的循环单链表

栈和队列的共同点是只允许在端点处插入和删除

最大容量为n的循环队列,队尾指针是rear,队头是front,则队满的条件是**(rear+1) MOD n==front**。

最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是rear==front

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。