Longjingrap

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.学习总结

1.1思维导图

1.2学习小结

本周学习的栈和队列都是线性结构他们有很多共同点,也有很多不同点。

相同点:

  • 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
  • 插入操作都是限定在表尾进行。
  • 都可以通过顺序结构和链式结构实现。

不同点:

  • 删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
  • 顺序栈能够实现多栈空间共享,而顺序队列不能

2.PTA实验作业

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

1.设计思路

输入字符串
    将输入的字符串进栈
while(字符串长度){
      依次将出栈的字符与输入的字符按顺序比较
          如果不相等 循环结束  输出NO;
              否则继续循环
                   }
   如果循环正常结束  输出YES;

2. 代码截图

3.PTA提交列表说明

  • 这道题没有用到C++中的栈(stack),不然会简便很多。一开始是部分正确,主要是把==写成=了,输入什么都是输出NO或者YES,看了很久很久才发现。

题目二:7-3 表达式转换

1.设计思路

输入字符串str[]
   for i=0 to 字符串长度{
    判断是否为数字 是就记录下来
          {如果数组下一位不是数字或小数点  根据题目输出格式输出数字
   如果符号为“(”则进栈
}
   {如果符号为“*或/”   栈为空字符便进栈 
   不为空 若栈头为*或者/ 则先输出栈头再将符号进栈
}
   {如果符号为“+或-”   在栈不为空的和栈头为+-*/的情况下 将栈中的符号出栈
   然后再将符号进栈
}
   {如果符号为“)”  则将栈中的符号全部出栈直到栈头为“(”
   再将“(”出栈,}}
     while(栈不为空)
      输出栈中剩余的符号;

2. 代码截图


3.PTA提交列表说明


  • 实在是想不出来了,看网上的和我的代码风格不一样。做了太久做不出来有点厌倦了,然后就不想去想了.....

题目三:7-2 银行业务队列简单模拟

1.设计思路

创建两个队列A和B
   奇数的顾客进队列A,偶数数的顾客进队列B
      在A或B队列不为空的情况下
          A队列出两人
              B队列出一人
     若A队列不为空 将队列元素出列
     若A队列不为空 将队列元素出列

2.代码截图

3.PTA提交列表说明

  • 这题因为上面函数题有一道思路差不多的,所以没花多少时间就可以写出来,不过输出问题错了一下

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

3.1 栈PTA排名

3.2 队列PTA排名

3.3 我的总分

105+97=202

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

c++ stl栈stack的成员函数介绍
操作 比较和分配堆栈
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素
#include<iostream>  
#include<stack>  
#include<queue>  
using namespace std;  
void main()  
{  
    stack<int> s;  
    int num;  
    cout<<"------Test for Stack-------"<<endl;  
    cout<<"Input number:"<<endl;  
    while(cin>>num)  
    {  
        s.push(num);  
    }  
    cout<<"The Stack has "<<s.size()<<" numbers.They are:"<<endl;  
    while(!s.empty())  
    {  
        cout<<s.top()<<" ";  
        s.pop();  
    }  
    cout<<"\nNow the size is "<<s.size()<<endl;  
    system("Pause");  
}  

输出结果

C++队列Queue类成员函数如下:
back()返回最后一个元素
empty()如果队列空则返回真
front()返回第一个元素
pop()删除第一个元素
push()在末尾加入一个元素
size()返回队列中元素的个数
#include<iostream>  
#include<stack>  
#include<queue>  
using namespace std;  
void main()  
{  
    queue<int> q;  
    int num;  
    cout<<"------Test for Queue-------"<<endl;  
    cout<<"Input number:"<<endl;  
    while(cin>>num)  
    {  
        q.push(num);  
    }  
    cout<<"Now the Queue has "<<q.size()<<" numbers."<<endl;  
    cout<<"The first is "<<q.front()<<endl;  
    cout<<"The last is "<<q.back()<<endl;  
    cout<<"All numbers:"<<endl;  
    while(!q.empty())  
    {  
        cout<<q.front()<<" ";  
        q.pop();  
    }  
    cout<<"Now the Queue has "<<q.size()<<" numbers."<<endl;  
    system("Pause");  
}  

输出结果

  • 分享一下c++中stack和queue的用法和使用例子,虽然有点简单,但可以在我们忘记的时候去看看巩固一下

5.代码Git提交记录截图


posted on 2018-04-14 20:44  Longjingrap  阅读(277)  评论(0编辑  收藏  举报