对接CSP-J/S认证C++算法蓝桥等考导学/四级:线性数据结构/之四:(17)栈之栈


一、观看PPT教程 

01】栈

二、练习题(不清楚回头查看有关PPT)

01】下面有关栈的定义的描述,如果有错误请改正:

栈是只能在一端进行数据操作的线性数据结构;栈具有先进后出的特点(First In Last Out)。 可以操作数据的一端称为栈底或者 Bottom;对应不开放操作的一端称为栈或者 Top。02】下面是使用静态数组模拟栈及栈的相关操作,请补全缺失的注释:

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

#include<iostream>#include<cmath>using namespace std;int stack[1001];  //int top = 0;  ////bool push(int x){  if(top < 1000) //  {    ++top;  //    stack[top] = x;  //    return true;   //  }  return false;  //}//int pop(){  if(top != 0)  //  {    int temp = stack[top];  //    top--;  //    return temp;  //  }  return NAN;  //返回不是数 }//bool empty(){  return top == 0;  //}//int get_top(){  if(!empty()){  //    return stack[top];  //  }  return NAN;   //返回不是数 }//int size(){  return top;  //}//void print_stack(){  while(!empty())  //  {    cout << get_top() << " ";    //    pop();  //  }  cout << endl;}

int main(){  //测试push     int data[] = {3,5,4,2,9,1,10};    for(int i=0; i < 7; i++){      cout << push(data[i]) << " ";  }  cout << endl;  //测试pop     cout << pop() << endl;    //测试empty    cout << empty() << endl;    //测试get_top    cout << get_top() << endl;     //测试size    cout << size() << endl;   //测试print_stack         print_stack();   return 0;}

03】选择题:

 

04】使用【02】定义的函数,完成以下乒乓球取放过程的主函数直径为一个乒乓球大小的空球筒,只有一端能放入。先将3、6、9号球依次装入球筒;再将 9、6号球拿出;最后依次放入1、2、3号球;打印现在筒内所有球的编号。【05】编程题:单调栈(栈中元素的大小依次递增或递减)。