C语言实现数据结构中的顺序栈
来源:互联网 发布:迅雷赚钱宝 移动网络 编辑:程序博客网 时间:2024/04/29 16:21
栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表,通常称插入,删除的一段为栈顶(Top),另一端为栈底(Botton)。当表中没有元素时称为空栈.
栈是后进先出(last in first out)的线性表
下面是C语言实现数据结构中的顺序栈及基本算法
# include <stdio.h>
# include <stdlib.h>
/*定义顺序栈*/
# define StackSize 100 //假定预分配的栈空间最多为100个元素
typedef char DataType; //假定栈元素的数据类型为字符
typedef struct
{
DataType data[StackSize];
int top;
}SeqStack;
/*错误信息输出函数*/
void Error(char *message)
{
fprintf(stderr,"Error:%s/n",message);
exit(1);
}
/*置空栈*/
void initStack(SeqStack *s)
{
//将顺序栈置空
s->top=-1;
}
/*判栈空*/
int stackEmpty(SeqStack *s)
{
return s->top==-1;
}
/*判栈满*/
int stackFull(SeqStack *s)
{
return s->top==StackSize-1;
}
/*进栈*/
void push(SeqStack *s,DataType x)
{
if(stackFull(s))
{
Error("Stack overflow");
}
//栈顶指针加1后将x进栈
s->data[++s->top]=x;
}
/*出栈*/
DataType pop(SeqStack *s)
{
if(stackEmpty(s))
{
Error("Stack underflow");
}
//栈顶元素返回后将栈顶指针减一
return s->data[s->top--];
}
/*取栈顶元素*/
DataType getStackTop(SeqStack *s)
{
if(stackEmpty(s))
{
Error("Stack is empty");
}
return s->data[s->top];
}
void main()
{
//定义栈
SeqStack stack;
SeqStack *s;
char inData;
char outData;
s=&stack;
//初始化栈
initStack(s);
//入栈
printf("Please input data/n");
while(inData!='/n')
{
scanf("%c",&inData);
push(s,inData);
printf("push %c to stack/n",inData);
}
//出栈
while(s->top!=-1)
{
outData=pop(s);
printf("Pop stack %c/n",outData);
}
}
- C语言实现数据结构中的顺序栈
- C语言实现数据结构中的顺序表
- 数据结构C语言实现之顺序栈
- <数据结构>顺序栈的C语言实现
- 数据结构--顺序栈实现(c语言)
- 数据结构-顺序栈-C语言实现
- C语言数据结构-顺序栈
- C语言实现数据结构中的链栈
- 数据结构学习系列四-顺序栈(c语言实现)
- 数据结构 学习笔记之:顺序栈的C语言实现
- 数据结构——顺序栈(C语言实现)
- 数据结构之---c语言实现栈的顺序存储
- 数据结构--C语言实现栈的顺序存储结构
- 数据结构中顺序栈c语言代码实现
- 数据结构--顺序栈的实现(C语言)
- 数据结构c语言实现定长顺序串
- c语言实现数据结构顺序表源代码
- 数据结构C语言实现之顺序表
- 深入剖析EFS
- ASP调用存储过程简单代码
- 如何使用命令打jar文件
- Symbian内存管理的二十二条军规
- linux/unix实用基本命令完整版
- C语言实现数据结构中的顺序栈
- 股票及炒股票的基础知识
- Linux必学的60个命令
- Symbian OS 开发初级手册
- 上网不得不看的网络安全知识(Security Technologies)
- JasperReport介绍
- 乔丹经典时刻全回放-江湖从此无飞人(最终特别版)
- usbkey
- 35岁前成功的12条黄金法则