c++ 栈和队列的基本实现

栈是一种后进先出的线型结构,C++实现栈的代码如下:

[cpp]  view plain  copy
  1. #include <iostream>  
  2. using namespace std;  
  3. #define MAXLEN 50  
  4. typedef struct  
  5. {  
  6.     char key[10];  
  7.     char name[20];  
  8.     int age;  
  9. }Data;  
  10. typedef struct  
  11. {  
  12.     Data nodeData[MAXLEN+1];  
  13.     int top;  
  14. }StackType;  
  15. void STInit(StackType &ST)//ST前一定要加上&,因为传入的是定义的ST本身,而不是只传入ST的值  
  16. {  
  17.     ST.top = -1;  
  18. }  
  19. void STPush(StackType &ST,Data nodeData)  
  20. {  
  21.     ST.nodeData[ST.top+1]=nodeData;  
  22.     ST.top++;  
  23. }  
  24. int STIsFull(StackType &ST)  
  25. {  
  26.     if(ST.top==MAXLEN)  
  27.         return 1;  
  28.     else  
  29.         return 0;  
  30. }  
  31. int STIsEmpty(StackType &ST)  
  32. {  
  33.     if(ST.top == -1)  
  34.         return 1;  
  35.     else  
  36.         return 0;  
  37. }  
  38. void ClearStack(StackType &ST)  
  39. {  
  40.     ST.top =-1;  
  41.     cout<<"clear the stack!!"<<endl;  
  42. }  
  43. void STShow(StackType &ST)  
  44. {  
  45.     cout<<"*******Show the Stack*******"<<endl;  
  46.     for(int i=0;i<=ST.top;i++)  
  47.     {  
  48.         cout<<"index:"<<i<<" "<<"key:"<<ST.nodeData[i].key<<" "<<"name:"<<ST.nodeData[i].name<<" "<<"age:"<<ST.nodeData[i].age<<endl;  
  49.     }  
  50.     cout<<"****************************"<<endl;  
  51. }  
  52. void STPop(StackType &ST)  
  53. {  
  54.     ST.top--;  
  55. }  
  56. int main()  
  57. {  
  58.     StackType ST;  
  59.     STInit(ST);  
  60.     if(STIsEmpty(ST))  
  61.         cout<<"Empty!!"<<endl;  
  62.     STShow(ST);  
  63.     Data nodeData;  
  64.     strcpy(nodeData.key,"No.1");  
  65.     strcpy(nodeData.name,"hahaha");  
  66.     nodeData.age = 21;  
  67.     STPush(ST,nodeData);  
  68.     strcpy(nodeData.key,"No.2");  
  69.     STPush(ST,nodeData);  
  70.     strcpy(nodeData.key,"No.3");  
  71.     STPush(ST,nodeData);  
  72.     STShow(ST);  
  73.     STPop(ST);  
  74.     STShow(ST);  
  75.     ClearStack(ST);  
  76.     STShow(ST);  
  77. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值