线性结构--->栈的顺序存储实现
2016-09-20 20:14
537 查看
栈的顺序存储
算法介绍
第一次代码实现2016年-9月-20号
仅供参考 有错误望指出
简单写三了个算法
创建
压栈
出栈
以后的有时间再补充
有什么疑问 也可以在 下边 提问 ! (有点托大了)或者发邮件
E-Mail:ppbboddqq.qq@qq.com
算法介绍
第一次代码实现2016年-9月-20号
仅供参考 有错误望指出
栈的顺序存储
算法介绍
感觉顺序存储没什么难的… 感觉难的都在 栈的应用上, 或者来几道 ACM 的题简单写三了个算法
创建
压栈
出栈
以后的有时间再补充
第一次代码实现——–2016年-9月-20号 ———–
一开始是想按照严太太书上的写, 但是写着写着感觉不对劲, 感觉心累, 为什么在 struct 里面定义那么多指针类型干嘛, 后面的代码虽然简洁, 非常实用, 但是感觉 对我不适合, 于是学习了 <<大话数据结构>> 这本书里面的.感觉也很棒!!!! 这次没有加注释...会补上的......
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #define true 1 #define false 0 #define STACKSIZE 4 #define STACKINCREMENT 2 typedef int ElemType; typedef int Position; typedef int Status; typedef struct Node{ ElemType *pBase; Position top; int stackSize; } Node, *Stack; Status initStack(Stack S); Status push(Stack S, ElemType e); Status pop(Stack S, ElemType *e); int main(){ int i; ElemType e; Stack S = (Stack)malloc(sizeof(Node)); if(S == NULL){ printf("Memory allocation failed, program termination!!\n"); exit(-1); } initStack(S); //压栈 push(S, 0); push(S, 1); push(S, 2); push(S, 3); push(S, 4); //出栈 pop(S, &e); return 0; } Status initStack(Stack S){ S->pBase = (ElemType*)malloc(sizeof(ElemType)*STACKSIZE); if(S->pBase == NULL){ printf("Memory allocation failed, program termination!!\n"); exit(-1); } S->top = -1; S->stackSize = STACKSIZE; return true; } Status push(Stack S, ElemType e){ // if(S->top >= S->stackSize - 1){ // printf("栈已满, 压栈失败!!!\n"); // return false; // } if(S->top >= S->stackSize -1){ S->pBase = (ElemType*)realloc(S->pBase, sizeof(ElemType)*(STACKSIZE+STACKINCREMENT)); if(S->pBase == NULL){ printf("Memory allocation failed, program termination!!\n"); exit(-1); } S->stackSize += STACKINCREMENT; } printf("S->top 的值是: %d", S->top); S->pBase[(++S->top)] = e; printf("压栈成功\n"); return true; } Status pop(Stack S, ElemType *e){ if(S->top <= -1){ printf("栈已空, 出栈失败!!!\n"); return false; } *e = S->pBase[(S->top)--]; printf("出栈成功: %d\n", *e); printf("S->top 的值是: %d", S->top); return true; }
仅供参考 ,有错误望指出.
有大神路过请指点一下。 菜鸟求飞 !!!有什么疑问 也可以在 下边 提问 ! (有点托大了)或者发邮件
E-Mail:ppbboddqq.qq@qq.com
相关文章推荐
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 线性表以顺序表为存储结构的实现(数据元素的类型为整型)
- 线性结构--->栈的链式存储实现
- 线性结构的顺序存储和链式存储的实现代码(一)
- 线性结构的顺序存储的实现
- 线性结构的顺序存储和链式存储的实现代码(二)
- 线性表(顺序存储)结构与功能的简易实现
- 数据结构2----线性表顺序存储和链式存储的实现(霜之小刀)
- 【数据结构作业一】写出顺序表的结构体类型定义及查找、插入、删除算法,并以顺序表作存储结构,实现线性表的插入、删除
- 数据结构(严蔚敏)C语言实现---线性表的顺序存储
- 线性结构-栈的顺序存储和链式存储实现
- 数据结构复习——线性表的顺序存储实现
- 线性结构--->循环队列的顺序储存实现
- 8. C#数据结构与算法 -- 线性存储结构(线性表之顺序表,数组实现)
- 线性表的存储结构---顺序表的实现
- 9. C#数据结构与算法 -- 线性存储结构(线性表之顺序表,动态数组和泛型实现)
- 【数据结构之线性表顺序存储】简单的数组的方式实现
- 线性表的链式存储结构之单链表类的实现之补充_Java
- 线性表的链式存储结构之单链表类的实现_Java
- 线性表的顺序存储及操作实现