数据结构栈和队列
1.学习总结
2.PTA实验作业
2.1 题目1 7-1 jmu-字符串是否对称
2.2 设计思路
1.定义结构体存放栈顶TOP和data,创建栈,申请空间
2.读入字符串,统计字符串的长度
3.定义整形变量record来判断奇偶数
4.for i=0 to record读入栈顶为TOP1的栈中
4.for i=j-1 to record读入栈顶为TOP2的栈中
5.for i=0 to i<record 将S->data[S->TOP1]和S->data[S->TOP2]的逐个比较。
6.i=reocrd 输出yes,否则输出no
2.3 代码截图
2.4 PTA提交列表说明。
2.1 题目2 7-1 jmu-报数游戏
2.2 设计思路
1.定义义结构体用于存放data,front,rear
2.创建队列,申请空间,令指针front和rear的起始值为0
3.for i=0 to i<num 令数组a[i]的起始值为1
4.while(1)进入循环,开始报数
5. a[i%num]==1,record++,继续下一个
6.当record=3,令 a[i%num]=0,重新开始报数
7.当a[i%num]!=1时,i++,直到a[i%num]=1
8.输出队列的值
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目3 7-2 银行业务队列简单模拟
2.2 设计思路
1.定义结构体用于存放data,front,rear
2.创建队列,申请空间,令指针front和rear的起始值为0
3.for i=0 to i<n 将序号为奇数和偶数分别存入到相应的数组中
4.for i=0 to number 将js数组的值存放到队列中,直到(i+1)%2==0,将os的值存入到队列Q中.
5.for i=j to record 将剩余的序号为偶数的值存入到队列中
6.输出队列的值
2.3 代码截图
2.4 PTA提交列表说明
部分值的存放用数组进行操作造成段错误
3.截图本周题目集的PTA最后排名
3.1 栈PTA排名
3.2 队列PTA排名
3.3 我的总分:
总分:100+78=178
4. 阅读代码
typedef struct {
int ord; //通道块在路径上的“序号”
PosType seat; //通道块在迷宫中的“坐标位置”
int di; //从此通道块走向下一通道块的“方向”
}SElemType; //栈的元素类型
status MazePath(MazeType maze,PosType start,PosType end){
//若迷宫maze中存在从入口strat到出口end的通道,则求得一条存放在栈中(从栈底到栈顶),并返回TRUE,否则返回FALSE
InitStack(S);
curpos=start; //设定“当前位置”为“入口位置”
curstep=1; //探索第一步
do{
if(pass(curpos)){ //当前位置可以通过,既是未曾走到过的通道块
FootPrint(curpos); //留下足迹
e=(curstep,curpos,1);
Push(S,e); //加入路径
if(curpos==end) //到达终点(出口)
return true;
curpos=NextPos(curpos,1); //下一位置是当前位置的东邻
curstep++; //探索下一步
}
else{ //当前位置不能通过
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4&&!StackEmpty(S)){
MarkPrint(e.seat); //留下不能通过的标记
Pop(S,e); //并退回一步
}
if(e.di<4){
e.di++;
Push(S,e); //换下一个方向探索
curpos=NextPos(e.seat,e.di);
}
}
}
}while(!StackEmpty(S));
return (FALSE);
}