1.学习总结(2分)


7-2 队列 银行业务队列简单模拟(25 分)

2.2 设计思路(伪代码或流程图)

  • 1.伪代码尽量文字描述,请用下面markdown符号渲染。
  • 2.伪代码不要翻译代码,用文字简洁描述代码思路。
  • 3.不需要写每个函数,主功能函数的伪代码设计即可
  • 4.伪代码若是过于复杂如对代码翻译等,扣分。
定义结构体指针 L1,L2
定义整型 n,k,e,j=0,i;
为L1和L2申请空间
 L1->front=L1->rear=0;
 L2->front=L2->rear=0;
输入n值
for  i=0  to   i<n
输入k值
如果k是奇数则进入L1
如果k是偶数则进入L2
当L1和L2只要有一个不为空
L1非空时  L1的两个数出栈并输出这两个数
L2非空时  L2的一个数出栈并输出这个数

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)


2.4 PTA提交列表说明。

  • 1本题基本没什么问题

栈7-1

2.2 设计思路(伪代码或流程图)

  • 1.伪代码尽量文字描述,请用下面markdown符号渲染。
  • 2.伪代码不要翻译代码,用文字简洁描述代码思路。
  • 3.不需要写每个函数,主功能函数的伪代码设计即可
  • 4.伪代码若是过于复杂如对代码翻译等,扣分。
定义结构体指针L  定义i,flag=0;
定义结构体e
定义字符串数组str
为L申请空间
为L的结构体成员data申请空间
令L->Top等于-1
输入str的值
for  i=0  to   str[i]!=0
把str字符串输入栈
end for
for i=0  to   str[i]!=0
把str字符串一个个出栈
如果 str[i]!=e   flag=1;退出循环
end for
如果flag==1,输出no
否则输出yes

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)


2.4 PTA提交列表说明。

  • 1.开始时PTA提醒e的值无效,才发现e作为实参,在PoP函数中虽然它的形参改变了,但是对main 主函数中的e无任何影响,于是想到用C++的引用调用的方法,在定义函数时在其前加了一个&引用调用符号就答案正确了;

提交列表:

栈7-4

2.2 设计思路(伪代码或流程图)

  • 1.伪代码尽量文字描述,请用下面markdown符号渲染。
  • 2.伪代码不要翻译代码,用文字简洁描述代码思路。
  • 3.不需要写每个函数,主功能函数的伪代码设计即可
  • 4.伪代码若是过于复杂如对代码翻译等,扣分。
定义结构体L
定义i=0,k,j,l flag=1
定义s1[100],s[10000],s2[10000],s3[10000]
定义Top1,Top2,Top3分别记录当前3个栈的容量  Top4记录s的容量  	Top4=0;    Top1=0;  Top2=strlen(s);   Top=strlen(s)-1;   Top3=-1
输入s1和s的字符串的值
while  Top>=0
如果s1[Top1]==s[Top]    Top2和Top自减;      s2[Top2]等于s1[Top1];      Top1和Top4自增;  L[i].x=1;x和y用于记录元素从哪儿到哪儿    L[i].y=2;     i自增;
否则如果s3[Top3]==s[Top4]  s2[Top2]等于s3[Top3];   Top2和Top3自减;   Top4自增; L[i].x=3;x和y用于记录元素从哪儿到哪儿   L[i].y=2;   i自增;		 
否则   Top3和Top4自增;   s3[Top3]等于s1[Top];   Top自减;   L[i].x=1;x和y用于记录元素从哪儿到哪儿   L[i].y=3;   i自增;
end while
 l等于Top3;    Top2自减;
for  j=0  j<=l  
如果s3[Top3]!=s[Top2]  flag=0;  Top3和Top2自减  ;退出循环
否则	L[i].x=3;  L[i].y=2;  i自增;  Top3和Top2自减;
end  for
如果flag==0转移不成功  按次序输出x  和  y的值
否则输出Are you kidding me?

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)



2.4 PTA提交列表说明。

  • 1.开始时就是像上图这样写的,后来发现我开始时是把Top3定义成-1,如果像上面这样写则下标变成-1.,显然不可行,所以修改的方案是把上下顺序调换一下就对了

以下是作业不做要求,自己平时记录的错误:

考试题目6-1:

提交列表:

1.首先自己犯了一个致命错误,没好好审题,题目明明说是输入一组有序数,自己却看成了要把输入的数排序,便花了无用的时间写了排序代码,粗心大意要好好反思;

部分正确是因为在InsertList(即插入函数)中,在找到比x大的break之后有一种情况是插入在中间或最前边,另一种情况是插入在最后,而这两种情况所需做的操作是不同的,而我忽略了插入在最后一个位置的情况,所以加上之后就对了,正确答案如下图:

考试题目6-3:


1.这是一个低级错误,开始时忘记加上s=s->next,导致s完全无变化

2.这是一开始只用一个指针变量删除区间的做法,只定义了一个s,然后s后面的后面的结点用s->next->next来表示,但是越写会发现越麻烦,而且会陷入死胡同里,所以后来改成定义两个指针,一个指前面,另一个指后面,然后两个指针同步后移,就可以遍历整个链表,后来的做法如下图所示:


3.调试发现会输出一个类似地址的数字,后来发现是在输出函数中错把第一个数值指向了头指针,所以输出的第一个数是头指针的地址

4.在把删除区间函数注释掉后,调试时发现输出的数并不按全顺序排列,所以在排列函数上找错,后来发现是因为选择排序时原本条件应为if(a[k]>a[j])k=j;自己却写成如上图所示的条件,如果像自己上面那样写会使得k只会记录最后一个比a[i]小的数值,而不是a[i]后面所有数的最小值,改过来排序就正确了;

队列6-1:


1.一开始是写 Q->Data[Q->Count]=X,后来发现这样写会导致删除的位置不准确,比如当MaxSize是6,Front是4,count为3,此时要添加一个数如果用Q->Data[Q->Count]=X就会错误,变成把值赋给下标为4的位置,而事实上应把值赋给下标为1的位置;

队列6-2:

1.这个是返回队列长度的函数,一开始写成return (Q->rear-Q->front)-1,可能是因为受之前写顺序表代码的影响,后来带入数值计算一下,发现不需要减1;

栈6-1


一开始返回值时是写return S->Data[S->Top-1],后来发现main函数中的X即返回值是指出栈的数,所以改成了以上这样就对了
PTA提交列表

栈6-2


1.开始时只记得给结构指针L(S)申请空间,忘记给结构指针中的数组申请空间导致段错误

2.开始时没有减1导致的结果是两数即使相邻判断结果栈也没有满,但实际上栈已经满了,所以应该减1;


3.没有注意题目要求输出的Tag是编号,开始时直接输出Tag导致错误
提交列表:

3.截图本周题目集的PTA最后排名(3分)

本次2个题目集总分:125+215=340分

必做题共:205分

我的总分2分

3.1 栈PTA排名

3.2 队列PTA排名

4. 阅读代码(必做,1分)

找1篇优秀代码贴图展示,代码内容必须是线性表相关,包括栈和队列、线性表,并说明该代码功能是什么,优点是什么?给出代码相关地址。代码建议去git去找。

5. 代码Git提交记录截图

posted @ 2018-04-14 18:33  哟呵~  阅读(291)  评论(3编辑  收藏  举报