- 一、概念
- 二、程序
- 三、练习
- 四、思考题
- 一、概念
- 二、程序
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、习题
- 四、思考题
- 一、题目描述
- 二、常规方法
- 三、常规方法的比较次数
- 四、方法改进一
- 五、第一次循环的可用信息
- 六、根据第一遍的可用信息作第二次循环
- 七、方法改进一的伪代码
- 八、方法改进一的比较次数
- 九、方法改进二
- 十、方法改进二的比较次数
- 十一、代码
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、代码
- 三、练习
- 一、概念
- 二、练习
- 一、概念
- 二、代码
- 三、习题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、活动选择问题
- 三、贪心策略的基本内容
- 四、哈夫曼编码
- 五、思考题
- 一、定义
- 二、代码
- 三、练习
- 四、思考题
- 一、概念
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、理解
- 三、改进
- 四、代码
- 五、习题
- 四、思考题
- 一、综述
- 二、代码
- 三、练习
- 四、思考题
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
- 一、综述
- 二、代码
- 三、练习
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
二、代码
//10.1 栈和队列
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
/*********栈*****************************/
struct stack
{
int top;//栈顶指针
int *s;//数组
stack(int size):top(0){s = new int[size+1];}
// ~stack(){delete []s;}
};
void Print(stack S)
{
int i;
//从栈底到栈顶的顺序输出
for(i = 1; i <= S.top; i++)
cout<<S.s[i]<<' ';
cout<<endl;
}
//检查一个栈是否为空
bool Stack_Empty(stack &S)
{
if(S.top == 0)
return true;
else
return false;
}
//入栈
void Push(stack &S, int x)
{
S.top++;
S.s[S.top] = x;
}
//出栈
int Pop(stack &S)
{
if(Stack_Empty(S))
{
cout<<"underflow"<<endl;
exit(0);
}
else
{
S.top--;
return S.s[S.top+1];
}
}
/*********队列****************************/
struct queue
{
int tail;//队列头指针
int head;//队列尾指针
int length;//队列长度
int *s;//数组
queue(int size):tail(1),head(1),length(size){s = new int[size+1];}
};
//从队列头到队列尾输出
void Print(queue Q)
{
int i;
if(Q.tail >= Q.head)
{
for(i = Q.head; i < Q.tail;i++)
cout<<Q.s[i]<<' ';
cout<<endl;
}
//因为循环的原因,队列尾可能在队列头的前面
else
{
for(i = Q.head; i <= Q.length; i++)
cout<<Q.s[i]<<' ';
for(i = 1; i < Q.tail; i++)
cout<<Q.s[i]<<' ';
cout<<endl;
}
}
//判断队列是否为空
bool Queue_Empty(queue Q)
{
if(Q.tail == Q.head)
return 1;
return 0;
}
//入队列
void Enqueue(queue &Q, int x)
{
Q.s[Q.tail] = x;
if(Q.tail == Q.length)
Q.tail = 1;
else Q.tail++;
}
//出队列
int Dequeue(queue &Q)
{
int x = Q.s[Q.head];
if(Q.head == Q.length)
Q.head = 1;
else Q.head++;
return x;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论