博客作业03--栈和队列

Posted 曾文惠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博客作业03--栈和队列相关的知识,希望对你有一定的参考价值。

1.学习总结(2分)

2.PTA实验作业(4分)

题目1:7-1 jmu-字符串是否对称

2.2 设计思路

函数参数 str[]为原字符串   s为str[]入栈的栈

        自定义类型变量 e   存放栈顶元素
for i=0 to  str[i]为空 
     将str[i]进栈s
end for
for i=0 to str[i]为空 
       Pop函数出栈(e=原栈顶)
       if str[i] 不等于 e
              返回false
       end if
end for
完全遍历,返回true

2.3 代码截图

2.4 PTA提交列表说明(提交了好多个段错误)

主要的区别在于字符数组的赋值与判断str[i]无内容的条件不同---------还是上学期gets和getchar的用法以及‘\\0’和\'\\n\'的用法还不太清楚

0分:


满分:


2.1 题目2:7-3 表达式转换

2.2 设计思路

传参 栈指针类型 s ,ElemType类型 e传当前字符, c传前一个字符

定义 ElemType类型 变量x存放栈头,a存放出栈元素
if  栈不为空
           x 等于 gettop(s)函数取栈头
           if  e 等于 \')\'
                   while x 不等于 \'(\' 且 队列不为空
                             弹出并输出栈顶
                   end
                   将栈顶的  (  弹出 
           end if
           else if  e 等于  (    进栈
           else if  e 等于  * 或 /
                     while 栈顶 x 等于 * 或  /
                               弹出并输出栈顶
                     end
                     e 进栈
          end
          else if  e 等于  +
                     while 栈顶 x 等于 * 或 x 等于 / 或 x 等于 + 或 x 等于 -
                               弹出并输出栈顶
                     end
                     if c 为数字 或 c 等于 )
                     e 进栈
          end
          else if  e 等于  -
                     while x 等于 * 或 x 等于 / 或 x 等于 + 或 x 等于 -
                               x=gettop(s);
                               pop出栈存于a
                               输出 空格 a
                     end
                     if c 为数字 
                           e 进栈
                     else
                           输出 空格 a
                           flag 等于0

          end
end if
else if e 等于 -
         输出 e
else
         进栈

2.3 代码截图

主函数

栈的基本操作


该题主要函数


2.4 PTA提交列表说明。

1.嵌套括号格式错误

    错误测试:当开头为多个括号时,第一个输出的数字前会多一个空格
    修正 :增加全局变量flag=0  ,第一次输出后令flag=1,通过对flag的值判断是否输出空格

2.运算数超过1位整数且有非整数出现

    修正:利用全局变量flag

3.运算数前有正负号

   修正:函数参数传将前一个字符,判断该字符的前一个字符是否也是运算符(e为当前字符,c为前一个字符)


在‘+’进队前判断c是否为数字

在‘-’进队前进行判断c是否为数字,且若是负数,‘-’要输出

2.1 题目3:7-1 jmu-报数游戏

2.2 设计思路

定义 整型变量 n存储总人数  m为出队数字
        自定义类型 e 存储出队数据
        队列指针类型  q

        输入 n,m
        if m 大于 n 
             报错
        end  if 
        else1
              for i=1 to i=n 共n个人
                   i 进队q
             end for
             初始化 i=0
             while  队列不为空
                   i++;    //报数
                   出队 e=队头
                   if  i%m 不等于 0
                       then     e回队尾
                       else     输出  e
                  end if  
            end  while
        end else1

2.3 代码截图

2.4 PTA提交列表说明

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

曾文惠
201721123002

3.1 栈PTA排名(27---100)

3.2 队列PTA排名(62---80)

3.3 我的总分:2分(180)

4. 阅读代码


进制转换

void conversion(int a, int b)  //参数为从a进制转换为b进制
 {
      int num = 0;
      char z = \'A\';
      printf("请输入你想要转换的%d进制数",a);
      scanf("%d", &num);
     while(num)
     {
         Push(Scale, num%b);  //取余数逐个进栈
         num /=b;  //求商
     }
     int e = 0;
     printf("转换为%d进制数为:", b);
     while(!StackEmpty(Scale))
     {
         Pop(Scale, e);   //逐个出栈
         if(e >= 10 && e <= 15)  //结果为十六进制时用到转换为字母
             printf("%c", z+e-10);
        else
             printf("%d", e);
     }
      printf("\\n");
 }

5. 代码Git提交记录截图



队列

以上是关于博客作业03--栈和队列的主要内容,如果未能解决你的问题,请参考以下文章

博客作业03--栈和队列

博客作业03--栈和队列

博客作业03--栈和队列

博客作业03--栈和队列

博客作业03--栈和队列

博客作业03--栈和队列