码迷,mamicode.com
首页 > 其他好文 > 详细

博客作业03--栈和队列

时间:2018-04-15 11:37:01      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:type   说明   har   for   初始化   超过   测试   getc   scale   

1.学习总结(2分)

技术分享图片

1.2.考试总结

  • 上周上机考试6.2归并算法复习,主要是头插法尾插法搞混了
    再次复习一下 链表的头插法和尾插法

头插法(倒序,开始要next=NULL)

void CreateListR(LinkList &L,int n){//创建 头插法 
   LinkList s;
   ElemType x;
   L=new LNode;
   L->next=NULL;
   int i;
   for(i=0;i<n;i++){
    s=new LNode;
    cin>>x;
    s->data=x;
    s->next=L->next;
    L->next=s;      
       } 
}

技术分享图片

尾插法(顺序,,最后要next=NULL)

void CreateListR(LinkList &L,int n){//创建 尾插法 
   LinkList s,r;
   ElemType x;
   L=new LNode;
   L->next=NULL;
   r=L;
   int i;
   for(i=0;i<n;i++){
    s=new LNode;
    cin>>x;
    s->data=x;
    r->next=s;
       r=s;     
       } 
    r->next=NULL;
}

技术分享图片

2.PTA实验作业(4分)

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

2.2 设计思路

函数参数 str[]为原字符串   s为str[x]入栈的栈(其中x从小到大)

定义 整型变量 i 为循环变量 
        自定义类型变量 e   存放栈头元素
for i=0 to  str[i]为空 
     if  Push函数将str[i]进栈s 等于 false(即栈满) 
     返回 false
end for
for i=0 to  str[i]为空 
       if  栈空  
            返回 false
       end if
       Pop函数出栈(e=原栈头)
       if str[i] 不等于 e
              函数销毁 s
              返回 false
       end if
       函数销毁 s
      返回 true
end for

2.3 代码截图

技术分享图片

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

技术分享图片

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

0分:

技术分享图片
技术分享图片

满分:

技术分享图片
技术分享图片

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

2.2 设计思路

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

定义 ElemType类型 变量x存放栈头,a存放出栈元素
if  栈不为空
           x 等于 gettop(s)函数取栈头
           if  e 等于 ‘)‘
                   while x 不等于 ‘(‘ 且 队列不为空
                             x=gettop(s);s栈头
                             pop出栈存于a
                             输出 空格 a
                   end
                   if x 等于  (  出栈 
           end if
           else if  e 等于  (    进栈
           else if  e 等于  *
                     while x 等于 * 或 x 等于 /
                               x=gettop(s);
                               pop出栈存于a
                               输出 空格 a
                     end
                     e 进栈
          end
          else if  e 等于  /
                     while x 等于 * 或 x 等于 /
                               x=gettop(s);
                               pop出栈存于a
                               输出 空格 a
                     end
                     e 进栈
          end
          else if  e 等于  +
                     while x 等于 * 或 x 等于 / 或 x 等于 + 或 x 等于 -
                               x=gettop(s);
                               pop出栈存于a
                               输出 空格 a
                     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为出队数字  循环变量 i 判断变量flag=0
        自定义类型 e 存储出队数据
        队列指针类型  q
        输入 n,m
        if m 大于 n 
             报错
        end  if 
        else1
              InitQueue函数初始化 q
              for i=1 to i=n 共n次
                   i 进队q
             end for
             初始化 i=0
             while  队列不为空
                   i++;
                   出队 e=队头
                   if  i 不等于 m
                            进队
                   end if
                   else2
                        if  flag 等于 0
                            输出  e;
                            flag 等于 1 表明不为队头
                        else
                            输出 空格  输出 e
                            重置 i 等于 0;
                  end else2     
            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--栈和队列

标签:type   说明   har   for   初始化   超过   测试   getc   scale   

原文地址:https://www.cnblogs.com/Zeng99/p/8732708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!