第六周 栈与队列作业

 

1.学习总结

1.1  重要关键词:数据结构,线性表,逻辑结构,物理结构,栈,队列;

1.2 我的思维导图:

2.PTA实验作业

作业内容:

本周要求挑选出3道题目书写设计思路、调试过程。设计思路使用伪代码描述。题目选做要求:

            a.不能选函数题

            b. 编程题选3题

2.1题目一:7-1 jmu-字符串是否对称(20 分)

2.2伪代码:定义字符串s2,定义栈s1;

                    int i=0

                    for(i=0;s2[i];i++)s1.push(s2[i]);//字符串全部入栈;

                     i=0;

                    while(!s1.empty()){

                         if(s1.top()!=s2[i]break;//字符串挨个与栈中元素比较;

                           s1.pop():}

2.2设计思路:利用栈先进后出的存储特点,字符串入栈后,出栈元素恰好是字符串是逆序的;

2.3代码截图:

2.4  PTA提交列表:

 

 

列表说明:部分正确是因为while(i++);

                将i++提出在while语句中后则全部正确;

2.1题目二:7-2 符号配对(20 分)

2.2伪代码:定义str字符串;定义q栈;

                  while(gets(str)){

                     if(str[0]=='.'&&str[1]=='\n')break;// 一行一行输入判断;

                   if(str[i]=='['||'('||'{'||'/*')p.push(str[i]);//此种符号均入栈;

                   if(str[i]==']'||')'||'}'||'*/')p.push(str[i])//碰到右边符号:

                        if(!p.empty()&&p.top()=='(')p.pop();//栈首元素为对应的左符号,栈首出栈;

                        else{
                        c=str[i];
                        flag=0;
                        break;
                       }//否则即为不配对字符;

               if(!p.empty()){
                   if(p.top()=='[')printf("[-?\n");
                   if(p.top()=='{')printf("{-?\n");
                   if(p.top()=='(')printf("(-?\n");
                  if(p.top()=='*')printf("/*-?\n");
             }//若栈不为空,则是缺少右边符号;   

2.2设计思路:左符号入栈,碰到右符号时比较栈顶元素与右符号是否配对;若栈顶为空或不配对,说明缺少左符号

否则比较完后,看栈中是否还有元素,若有,则说明缺少右符号;

2.3代码截图:

 

 

 

2.4  PTA提交列表:

 

 

 

列表说明:编译错误是因为中英文输入法;

                运行超时是结束输入语句判断错误;

2.1题目三:7-1 jmu-报数游戏(15 分)

2.2伪代码:定义变量n表总人数,m表循环报数的数;

                 定义一个队列q

                先从1到n依次入队;

                 while(k--&&!q.empty())

                 依次取m-1个数出队然后又入队,入到后面;

                cin>>e;//跳出循环时输出第m个数的值;

 从第一个数开始出队k=m-1(k--),且在第m个数之前的数出队后加到原队的后面,直到第m个数,出队。k又开始从k=m-1开始计数;

2.2设计思路:因为队列先入先出的特点,要第m个数出队,则其前面的数必须先出队,所以可以把他们出队后又依次加在队列的后面;

2.3代码截图:

2.4  PTA提交列表

 

列表说明:编译错误是因为复制粘贴的不准确,出现很多小问题;

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

   3.1 栈PTA排名

  3.2 队列PTA排名

    3.3 我的总分:  2分

4. 阅读代码

        代码地址:https://gitee.com/adressad/codes/9ystlgoh6b413n5vfupa839

        原因:将符号优先级转化为数字,更容易理解;

5. 代码Git提交记录截图

 

posted on 2018-04-08 00:34  松岛菜  阅读(180)  评论(2编辑  收藏  举报