C++顺序栈
2015-10-06 19:45
555 查看
SeqStack:
//顺序栈 #include<iostream> using namespace std; typedef int elemType; const int MAXSIZE = 50; struct SqStack { elemType data[MAXSIZE]; elemType top; }; //初始化栈 void InitStack(SqStack *S) { for(int i=0;i<MAXSIZE;i++) { S->data[i] = 0; } S->top = -1; } //获取栈的长度 int LengthStack(SqStack *S) { int length = 0; if(S->top = -1) return 0; int i = S->top; while(i>=0) { i--; length++; } return length; } //自顶向下遍历栈 void TraverseStack(SqStack *S) { if(S->top == -1) cout<<"栈为空."<<endl; int num = S->top; int i = 1; while(num>=0) { cout << i <<":\t"<< S->data[num] <<endl; i++; num--; } } //获取栈顶元素 int GetTop(SqStack *S) { if(S->top == -1) { cout <<"栈为空."<<endl; return false; } elemType e = S->data[S->top]; return e; } //插入元素为e的新的栈顶元素 bool Push(SqStack *S, elemType e) { if(S->top == MAXSIZE-1) { cout<<"栈已满."<<endl; return false; } S->top++; S->data[S->top] = e; return true; } //删除栈顶元素 bool Pop(SqStack *S, elemType e) { if(S->top == -1) { cout <<"栈为空."<<endl; return false; } e = S->data[S->top]; S->data[S->top] = 0; S->top--; return true; } //判断是否为空 void EmptyStack(SqStack *S) { if(S->top == -1) cout <<"栈为空."<<endl; else cout<<"栈不为空."<<endl; } //清空栈 void ClearStack(SqStack *S) { if(S->top == -1) cout <<"栈已为空."<<endl; for(int i=S->top;i>=0;i--) S->data[i] = 0; S->top = -1; } int main() { SqStack s; InitStack(&s); for(int i=1;i<7;i++) Push(&s,i); TraverseStack(&s); cout<<endl; elemType x = GetTop(&s); cout<<"栈顶元素为: "<< x <<endl; elemType i=0;; Pop(&s, i); cout<<"删除栈顶元素后栈为:"<<endl; TraverseStack(&s); cout<<endl; ClearStack(&s); cout<<"清空栈..."<<endl; TraverseStack(&s); EmptyStack(&s); cout<<endl; return 0; }
相关文章推荐
- 关于c语言动态分配内存的知识点的总结(总结)
- 冒泡排序
- C++实现双向链表
- C++primer学习:string类操作练习(3)
- C++双向循环链表
- c++ primer 第四章习题(1)
- Binary Tree Right Side View
- C++ 复制构造函数和赋值操作符
- C++学习笔记之继承
- 黑马程序员——OC语言加强---autorelease基本使用
- STL学习系列之一——标准模板库STL介绍
- 黑马程序员——OC语言加强---@property参数
- 黑马程序员——OC语言加强---内存管理的基本概念及范围
- 位运算符
- 黑马程序员——OC语言基础---id类型及应用场景
- C++中内联函数何时被编译器禁止?
- 黑马程序员——OC语言基础---@synthesize关键字介绍和使用
- C++中,get和getline函数的区别
- 位运算符
- 黑马程序员——OC语言基础---@property关键字介绍及使用