博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈和队列
阅读量:5264 次
发布时间:2019-06-14

本文共 3433 字,大约阅读时间需要 11 分钟。

栈;后进先出的线性表

进栈,出栈


 

 

View Code

 

两栈共享空间

 


 

分别以数组的顶端和末端为栈底,向中间延伸

///         /// 两栈共享-进栈        ///         public void DPush(dstack s, int data,int stackNo)        {            //栈满            if (s.top1 + 1 == s.top2)            {                return;            }            //从栈1进栈            if (stackNo == 1)            {                s.data[++s.top1] = data;            }            //从栈2进栈            else if (stackNo == 2)            {                s.data[--s.top2] = data;            }        }        ///         /// 两栈共享-出栈        ///         public void DPop(dstack s, int data, int stackNo)        {            if (stackNo == 1)            {                //栈1满                if (s.top1 == -1)                {                    return;                }                s.top1--;            }            else if (stackNo == 2)            {                //栈2满                if (s.top2 == s.size)                {                    return;                }                s.top2++;            }        }
View Code

 

两栈共享空间的适用场景:当两个栈的空间需求具有相反关系时,比如买卖股票,有人买入也有人卖出.

 

栈的链式存储


 进栈:

更新栈顶元素

出栈:

 

///         /// 链栈进栈        ///         ///         ///         public void LinkStackPush(linkstack ls,int data)        {            linkstackNode ln = new linkstackNode();            ln.data = data;            //把当前栈顶元素赋值给新节点的后继            ln.next = ls.top;            //更新栈顶元素            ls.top = ln;            ls.count++;                    }        ///         /// 链栈出栈        ///         ///         ///         public void LinkStackPop(linkstack ls)        {            linkstackNode p;            if (ls==null)            {                return;            }            p = ls.top;            //要删除的数据            int data = ls.top.data;            //下移一位            ls.top = ls.top.next;            ls.count--;        } public class linkstackNode    {        public dynamic data;        public linkstackNode next;    }    public class linkstack    {        //栈顶指针        public linkstackNode top;        public int count;    }
View Code

   

队列:先进先出的线性表


 1.顺序存储

循环队列:将队列收尾相连, 解决了队列的假溢出问题.

 入队,出队

///         /// 循环队列入队操作        ///         public void EnQueue(queue q,int data)        {            //队列已满            if ((q.rear+1)%q.size==q.front)            {                return;            }            q.data[q.rear] = data;            q.rear = (q.rear + 1) % q.size;        }        ///         /// 循环队列出队        ///         ///         public void DeQueue(queue q)        {            //队列为空            if (q.front==q.rear)            {                return;            }            //出队的数据            int data = q.data[q.front];            q.front = (q.front + 1) % q.size;        }
View Code

2.链式存储

 入队:

 

 

出队:

 

///         /// 链队入队        ///         public void EnLQueue(QueueList q,int data)        {            QueueNode n = new QueueNode();            n.data = data;            n.next = null;            q.rear.next = n;            q.rear = n;        }        public void DeLQueue(QueueList q)        {            //空队列            if (q.front == q.rear)            {                return;            }            //要删除的节点            QueueNode n = q.front.next;            int data = (int)n.data;            q.front.next = n.next;            //若队头是队尾,则删除后将rear指向头结点            if (q.rear == n)            {                q.rear = q.front;            }        }
View Code

 

转载于:https://www.cnblogs.com/Linky008/p/8059477.html

你可能感兴趣的文章
【临时重发】复旦大学 在职软件工程硕士(双证)2017年入学考试 参考书推荐...
查看>>
你若运行,便是晴天!
查看>>
android应用框架搭建------BaseActivity
查看>>
弄明白Android 接口回调机制
查看>>
struts1实现简单的登录功能(附源码)
查看>>
Android ListView实现新闻客户端的新闻内容图文混排
查看>>
sharepoint中在blog中,发布post可以直接打开 word 发布!(Launch blog program to post用代码实现)...
查看>>
20175320 2018-2019-2 《Java程序设计》第10周学习总结
查看>>
【视频】运行第一个容器 - 每天5分钟玩转容器技术(5)
查看>>
助教学习总结
查看>>
linux 下文件误删恢复
查看>>
HDU 6044
查看>>
Java多线程:什么时候使用哪种实现方式
查看>>
Struts2运行机制
查看>>
蓝桥网试题 java 基础练习 回文数
查看>>
双向链表的结构
查看>>
PC机中各类存储器的逻辑连接情况
查看>>
redis的主从复制,读写分离,主从切换
查看>>
文件下载
查看>>
GPU并行计算版函数图像生成器
查看>>