栈的顺序存储结构的相关操作(数据结构)
2017-07-24 22:33
162 查看
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stdio.h> #define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 typedef int Status; typedef int ElemType; using namespace std; //栈的顺序存储表示 typedef struct { ElemType *base;//在栈构造和销毁之后,base的值为NULL ElemType *top;//栈顶指针 int stacksize;//当前已分配的存储空间,以元素为单位 }Stack; //栈的初始化 Status InitStack(Stack *s) { s->base = (ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType)); if (!s->base) return ERROR; s->top = s->base; s->stacksize = STACK_INIT_SIZE; return OK; } //入栈,插入e为新的栈顶元素 Status Push(Stack *s, ElemType e) { if (s->top - s->base >= s->stacksize) //栈满,追加存储空间 { s->base = (ElemType*)realloc(s->base, (s->stacksize + STACKINCREMENT)*sizeof(ElemType)); if (!s->base) return ERROR; s->top = s->base + s->stacksize; s->stacksize += STACKINCREMENT; } *(s->top) = e; s->top++; return OK; } //出栈,将栈顶元素删除,删除的元素赋值给e Status Pop(Stack *s, ElemType &e) { if (s->top == s->base) return ERROR; e = *(--s->top); //注意该操作 return OK; } //计算栈中元素个数 int Length(Stack *s) { return (s->top - s->base); } //打印 void Print(Stack *s) { int count = 0; while(s->top != s->base) { cout << *(--s->top)<< endl; count++;//计数,最后再将top指针复位 } s->top += count; } void main() { Stack s; InitStack(&s); cout << "请输入5个整型数据:" << endl; int e; for (int i = 0; i < 5; i++) { cin >> e; Push(&s, e); } cout << "此时栈中元素个数为:" << Length(&s) << endl; cout << "栈中元素为:" << endl; Print(&s); //测试出栈 int n; Pop(&s, n); cout << "出栈的元素为:" << n << endl; cout << "此时栈中元素为:" << endl; Print(&s); system("pause"); }
相关文章推荐
- 数据结构试验报告-查找相关操作
- 数据结构一一线性表的顺序存储结构之查找操作
- 数据结构:二叉查找树的相关操作
- 数据结构_顺序栈相关操作
- 数据结构操作与运算-CvPoint相关数据结构(printf 控制台)
- 第二天 之数据结构、链表的相关概念和操作
- 数据结构-单向链表相关操作算法
- 11-数据结构_链表相关操作
- 链表的相关操作查找插入删除(c++ 数据结构)
- 数据结构学习---线性表顺序存储结构的应用(二):插入操作
- 堆栈和队列的数据结构和相关操作总结
- 【数据结构】二叉树相关操作
- 数据结构学习1:链表的相关操作
- 数据结构_栈的相关操作
- 数据结构_双链表的建立及相关操作
- 数据结构-双向循环链表(无头结点)相关操作
- 数据结构_动态数组形式的顺序表相关操作C语言源代码
- 数据结构_顺序栈的建立及相关操作_C语言源代码
- 数据结构(9)--链队列的定义以及相关操作的实现
- Linux块设备驱动(四)————块设备的数据结构与相关操作及I/O调度器