1.学习总结(2分)

1232310-20180414183204221-923074507.png
1232310-20180411190351782-95041945.png

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 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

1232310-20180414225524414-912994941.jpg
1232310-20180414225537096-1387225600.jpg

2.4 PTA提交列表说明。

1232310-20180414225759990-345328305.jpg

  • 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 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

1232310-20180411133728426-2132741555.jpg
1232310-20180411133740819-1853294473.jpg

2.4 PTA提交列表说明。

1232310-20180328163058167-847686299.jpg

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

    提交列表:

    1232310-20180328163702274-979408832.jpg

    栈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 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

1232310-20180411133831916-1381496860.jpg
1232310-20180411133845524-2071829265.jpg
1232310-20180411133857531-1067321767.jpg

2.4 PTA提交列表说明。

1232310-20180329160248764-1916469369.jpg

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

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

    考试题目6-1:

    提交列表:
    1232310-20180402212220019-1174065067.jpg
    1.首先自己犯了一个致命错误,没好好审题,题目明明说是输入一组有序数,自己却看成了要把输入的数排序,便花了无用的时间写了排序代码,粗心大意要好好反思;
    1232310-20180404163113246-969078480.jpg
    部分正确是因为在InsertList(即插入函数)中,在找到比x大的break之后有一种情况是插入在中间或最前边,另一种情况是插入在最后,而这两种情况所需做的操作是不同的,而我忽略了插入在最后一个位置的情况,所以加上之后就对了,正确答案如下图:
    1232310-20180402212813328-1815139186.jpg

    考试题目6-3:

    1232310-20180404154050773-1149085921.jpg
    1.这是一个低级错误,开始时忘记加上s=s->next,导致s完全无变化
    1232310-20180404154307102-119286396.jpg
    2.这是一开始只用一个指针变量删除区间的做法,只定义了一个s,然后s后面的后面的结点用s->next->next来表示,但是越写会发现越麻烦,而且会陷入死胡同里,所以后来改成定义两个指针,一个指前面,另一个指后面,然后两个指针同步后移,就可以遍历整个链表,后来的做法如下图所示:
    1232310-20180411134609691-1788204515.jpg
    1232310-20180404155016629-1841588644.jpg
    3.调试发现会输出一个类似地址的数字,后来发现是在输出函数中错把第一个数值指向了头指针,所以输出的第一个数是头指针的地址
    1232310-20180404162003834-731509664.jpg
    4.在把删除区间函数注释掉后,调试时发现输出的数并不按全顺序排列,所以在排列函数上找错,后来发现是因为选择排序时原本条件应为if(a[k]>a[j])k=j;自己却写成如上图所示的条件,如果像自己上面那样写会使得k只会记录最后一个比a[i]小的数值,而不是a[i]后面所有数的最小值,改过来排序就正确了;

    队列6-1:

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

    队列6-2:

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

    栈6-1

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

    栈6-2

    1232310-20180327183128451-1423019092.jpg
    1.开始时只记得给结构指针L(S)申请空间,忘记给结构指针中的数组申请空间导致段错误
    1232310-20180327183634431-1974137856.jpg
    2.开始时没有减1导致的结果是两数即使相邻判断结果栈也没有满,但实际上栈已经满了,所以应该减1;
    1232310-20180328132454936-953673521.jpg
    1232310-20180328132508732-800062978.jpg
    3.没有注意题目要求输出的Tag是编号,开始时直接输出Tag导致错误
    提交列表:
    1232310-20180328163946066-536100885.jpg

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

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

    必做题共:205分

    我的总分2分

    3.1 栈PTA排名

    1232310-20180411185833552-2128813289.jpg

    3.2 队列PTA排名

    1232310-20180411185851654-1714887335.jpg

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

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

    5. 代码Git提交记录截图

    1232310-20180413233421607-124531610.jpg

转载于:https://www.cnblogs.com/guoruiqian/p/8658257.html

要求: 客户业务分为两种。第一种是申请从银行得到一笔资金,即取款或借款。第二种是向银行投入一笔资金,即存款或还款。银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果居于第一种,且申请额超出银行现存资金总额顺得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。每接待完一个第二种业务的客户,则顺序检查相处理(如果可能)第二个队列中的客广,对能满足的申请者予以满足,不能满足者重新排列第二个队列的队尾。注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止被盗(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只开一个窗口。假设检查不需要时间。营业时间结束时所有存户立即离开银行。 写一个上述银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平 均时间。 [测试数据] 一天营业开始时银行拥有的款额为10000(元).营业时间为600(分钟)。其他模拟参量 自定。注意测定两种极端的情况:一是两个到达事件之间的间隔时间很短,而客户的交易时 间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时间很短。 [实现提示] 事件有两类;到达银行和离开银行。韧始时银行现存资金总额为total。开始营业后的第 —个事件是客户到达,营业时间从0到closetime。到达事件发生时随机地设置此客户的交 易时间相距下一到达事件之间的时间间隔。每个客户要办理的款额也是随机确定的,用负值 和正值分别表示第一类相第二类业务。变量total、closetime以及上述两个随机量的上下界 均文互地从终端读入,作为模拟参数。 两个队列和一个事件表均要用动态存储结构实现。注意弄清应该在什么条件下设置离开事件,以及第二个队列甩怎样的存储结构实现时可以获得较高的效率。注意:事件表是按 时间顺序有序的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>