线性表之栈的顺序存储实现
来源:互联网 发布:药智网数据库 编辑:程序博客网 时间:2024/06/06 03:14
栈是一种受限制的线性表,说其受限制是因为它的插入和删除只能在栈顶操作。
运行界面:
栈的特性是后进先出,所以也将栈称为后进先出(LIFO)表。
栈的顺序存储也称为线性栈,是利用一组地址连续的存储单元依次存放自栈底到栈顶的元素。用栈顶指针top来标识栈顶元素在顺序栈中的位置。
栈的结构体表示:
typedef struct
{
int data[MAXNUM]; //存储数据的数组
int top; //指向栈顶元素,在数组中相当下标
}seqstack;
插入元素操作:
需先将top指针指向栈顶上面的空位,然后再进行赋值。
void Push(seqstack *stack,int val)
{
if(stack->top >= MAXNUM-1)
{
printf("栈已满!\n");
return ;
}
stack->top++; //top指针先指向栈顶上面的空位
stack->data[stack->top] = val;//将数据元素入栈,成为新的栈顶元素
}
删除元素操作:
将top指针向下移动,指向新的栈顶元素
int Pop(seqstack *stack)
{
if(!IsEmpty(stack))
return stack->data[stack->top--]; //弹出栈顶元素,并且栈顶指针向下一位
return 0;
}
顺序栈的C语言实现:(codeblocks完美运行)
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXNUM 100typedef struct{ int data[MAXNUM]; //存储数据的数组 int top ; //指向栈顶元素,在数组中相当下标}seqstack;//初始化顺序栈void Initstack(seqstack *stack){ memset(stack->data,0,MAXNUM); stack->top = -1;}//判断栈是否为空,是返回1,否则返回0int IsEmpty(seqstack *stack){ if(stack->top == -1) return 1; else { return 0; }}//返回栈顶指针指向的元素int Top(seqstack *stack){ if(!IsEmpty(stack)) return stack->data[stack->top]; return 0;}//出栈int Pop(seqstack *stack){ if(!IsEmpty(stack)) return stack->data[stack->top--]; //弹出栈顶元素,并且栈顶指针向下一位 return 0;}//入栈void Push(seqstack *stack,int val){ if(stack->top >= MAXNUM-1) { printf("栈已满!\n"); return ; } stack->top++; //top指针先指向栈顶上面的空位 stack->data[stack->top] = val;//将数据元素入栈,成为新的栈顶元素}void destroy_stack(seqstack *stack){ if(!IsEmpty(stack)) free(stack); else { printf("栈已为空!\n"); return ; }}int main(){ int i; srand((unsigned)time(0)); seqstack stack; //创建一个顺序栈 Initstack(&stack); for(i=0;i<30;i++) Push(&stack,rand()%100); //创建30个0-99的随记数,并入栈 printf("栈顶元素为:%d\n",Top(&stack)); printf("打印栈顶元素:\n"); for(i=0;i<30;i++) { if(i%6 == 0) printf("\n"); printf("%3d ",Pop(&stack)); } printf("\n销毁栈!\n"); destroy_stack(&stack); return 0;}
运行界面:
阅读全文
0 0
- 线性表之栈的顺序存储实现
- java 实现线性表之顺序存储
- 线性表之顺序存储实现
- 线性表的顺序存储的实现
- 线性结构--->栈的顺序存储实现
- 线性表的顺序存储实现
- 数组实现线性表的顺序存储
- java实现线性表的顺序存储
- 线性表的Java实现--顺序存储
- 线性表的顺序存储实现
- 线性表的动态顺序存储实现
- C++实现顺序存储的线性表
- 线性表的动态顺序存储实现
- 线性表的顺序存储实现
- 线性表顺序存储的实现
- 线性表的顺序存储实现
- 线性表的顺序存储与实现
- 线性表的顺序存储实现
- POJ1724
- JZOJ 3929. 【NOIP2014模拟11.6】创世纪
- 排序算法——直接选择排序
- Spring Aop源码学习--JoinPoint连接点
- 关于Java开发中设计模式的使用问题
- 线性表之栈的顺序存储实现
- 小仙女—快速入门javescript基础
- Collection接口下的集合
- 【NOIP2014模拟11.6】射击
- Leetcode算法学习日志-169 Majority Element
- 关于研究一个新领域,研究思路的总结
- jeesite使用中遇到的异常记录
- 短信按钮 自定义控件
- insmod加载驱动模块传递参数方法