栈-顺序表实现
2013-11-24 01:07
190 查看
/*********************************************************************** *Copyright (c) *Others:注意malloc(0*sizeof(int))的问题 ***********************************************************************/ #include <stdio.h> #include <stdlib.h> struct SequentialStack { int* date; /*数据域*/ int top; /*date[top]指向栈顶元素,栈为空时,top=-1*/ int stacksize; /*栈空间的大小*/ }; typedef struct SequentialStack SqStack; typedef SqStack* SSp; /*********************************************************************** *0.错误函数 ***********************************************************************/ void Error(char* s) { printf("%s\n",s); } /*********************************************************************** *1.初始化栈 ***********************************************************************/ void InitSequentialStack(SSp p,int n) { p->date=(int*)malloc(n*sizeof(int)); p->top=-1; p->stacksize=n; } /*********************************************************************** *2.销毁栈 ***********************************************************************/ void DestroySequentialStack(SSp p) { p->top=-1; p->stacksize=0; free(p->date); } /*********************************************************************** *3.求栈长 ***********************************************************************/ int LengthSequentialStack(SSp p) { return p->top + 1; } /*********************************************************************** *4.取栈顶元素 ***********************************************************************/ int GetTopLengthSequentialStack(SSp p) { if(p->top != -1) { return p->date[p->top]; } else { Error("Stack Empty!"); return 0; } } /*********************************************************************** *5.入栈 ***********************************************************************/ void PushSequentialStack(SSp p,int x) { if((p->top + 1) >= (p->stacksize)) { Error("Stack Overflow!"); } else { p->top = p->top + 1; p->date[p->top] = x; } } /*********************************************************************** *6.出栈 ***********************************************************************/ int PopSequentialStack(SSp p) { if((p->top) >= 0) { int x = p->date[p->top]; p->top = p->top - 1; return x; } else { Error("Stack Empty!"); return 0; } } /*********************************************************************** *7.依次弹出栈中所有元素 ***********************************************************************/ void PrintPopSequentialStack(SSp p) { int i = p->top; printf("栈内元素如下:"); while(i >= 0) { printf("%d ",p->date[i]); i = i -1; } printf("\n输出完毕\n\n"); }
相关文章推荐
- C语言实现 静态顺序表
- 编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。
- 【数据结构】C语言实现顺序表(静态顺序表)
- 用顺序表实现俩有序顺序表拼接后还是有序的
- 数据结构--顺序表c语言实现
- c++实现数据结构1.顺序表
- C语言实现动态顺序表
- 数据结构c代码实现顺序表01
- 实现动态顺序表
- K:线性表的实现—顺序表
- 动态顺序表基本操作实现
- C++实现模板顺序表和三种排序方法
- 线性表 及Java实现 顺序表、链表、栈、队列
- 数据结构-C语言 顺序表实现归并 C=A∪B
- java实现顺序表结构
- c语言描述的顺序表实现
- Java顺序表简单实现
- 动态顺序表部分接口的简单实现
- 顺序表c语言实现
- 数据结构顺序表静态数组与动态数组C++实现