顺序栈的进栈操作
来源:互联网 发布:福特嘉年华st轮毂数据 编辑:程序博客网 时间:2024/06/05 10:51
转至:http://www.nowamagic.net/librarys/veda/detail/2272
对于栈来说,最重要的操作之一就是进栈。
如上图所示,进栈操作push大概分为两步。
- 栈顶指针 S->top 先自增1,给需要进栈的元素腾出内存空间。
- 再赋值。就是给对应的数组元素赋值:S->data[S->top]=e
/* 插入元素e为新的栈顶元素 */Status Push(SqStack *S,SElemType e){ if(S->top == MAXSIZE -1) /* 栈满 */ { return ERROR; } S->top++;/* 栈顶指针增加一 */ S->data[S->top]=e; /* 将新插入元素赋值给栈顶空间 */ return OK;}
插入元素之前,要进行栈的初始化也就是构造一个空栈,所以只要将指针 top 指向 -1就行。S->top=-1
/* 构造一个空栈S */Status InitStack(SqStack *S){ /* S.data=(SElemType *)malloc(MAXSIZE*sizeof(SElemType)); */ S->top=-1; return OK;}
初始化完了,把栈的遍历操作也补一下:
/* 从栈底到栈顶依次对栈中每个元素显示 */Status StackTraverse(SqStack S){ int i; i=0; while(i<=S.top) { visit(S.data[i++]); } printf("\n"); return OK;}Status visit(SElemType c){ printf("%d ",c); return OK;}
完整的可执行程序代码:
#include "stdio.h"#include "stdlib.h"#define OK 1#define ERROR 0/* 存储空间初始分配量 */#define MAXSIZE 20typedef int Status;/* SElemType类型根据实际情况而定,这里假设为int */typedef int SElemType;/* 顺序栈结构 */typedef struct{ SElemType data[MAXSIZE]; int top; /* 用于栈顶指针 */}SqStack;/* 构造一个空栈S */Status InitStack(SqStack *S){ /* S.data=(SElemType *)malloc(MAXSIZE*sizeof(SElemType)); */ S->top=-1; return OK;}/* 从栈底到栈顶依次对栈中每个元素显示 */Status StackTraverse(SqStack S){ int i; i=0; while(i<=S.top) { visit(S.data[i++]); } printf("\n"); return OK;}Status visit(SElemType c){ printf("%d ",c); return OK;}/* 插入元素e为新的栈顶元素 */Status Push(SqStack *S,SElemType e){ if(S->top == MAXSIZE -1) /* 栈满 */ { return ERROR; } S->top++;/* 栈顶指针增加一 */ S->data[S->top]=e; /* 将新插入元素赋值给栈顶空间 */ return OK;}int main(){ SqStack s; int opp; int j; if(InitStack(&s)==OK) { printf("顺序栈初始化成功。"); StackTraverse(s); } printf("\n1.随机给栈赋值 \n2.栈遍历"); printf("\n0.退出 \n请选择你的操作:\n"); while(opp != '0'){ scanf("%d",&opp); switch(opp){ case 1: srand(time(0)); for(j=1;j<=10;j++) { Push(&s,rand()%100+1); } StackTraverse(s); break; case 2: StackTraverse(s); break; case 0: exit(0); } }}
0 0
- 顺序栈的操作
- 顺序栈的操作
- 顺序栈的操作
- 顺序栈的操作
- 顺序栈的操作
- 顺序栈的操作
- 顺序栈的进栈操作
- 顺序栈的基本操作
- 顺序栈的一些操作
- 顺序栈的基本操作....
- 顺序栈的基本操作
- 顺序栈的相关操作
- 顺序栈的相关操作
- 顺序栈的各种操作.
- 顺序栈的一般操作
- 顺序栈的基本操作
- 顺序栈的常用操作
- 顺序栈的基本操作
- 【整理】Rest规则和php中使用curl请求
- Glide源码分析
- java PDF转image
- [Data Structure]九大内部排序算法
- Python-Tuple元组
- 顺序栈的进栈操作
- Python数字的格式化——格式化字符串
- 【腾讯TMQ】基于模型的自动化测试工具——GraphWalker
- 点击列表的时候,点击的那个样式高亮其他的不亮
- 使用android studio常用的一些快捷键以及常用权限
- 414. Third Maximum Number
- Mac/iOS 自动化打包
- java jni使用教程
- LeetCode 109. Convert Sorted List to Binary Search Tree