数据结构-栈(C语言代码)
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;struct Node* next;
}Node;//初始化栈
Node* initStack() {Node* S = (Node*)malloc(sizeof(Node));S->data = 0;S->next = NULL;return S;
}//判断栈空
int isEmpty(Node* S) {if (S->data == 0 || S->next == NULL) {return 1;}else {return 0;}
}//读栈顶元素
int getTop(Node* S) {if (isEmpty(S)) {return -1;}else {return S->next->data;}
}//入栈
void push(Node* S, int data) {Node* node = (Node*)malloc(sizeof(Node));node->data = data;node->next = S->next;S->next = node;S->data++;
}//出栈
int pop(Node* S) {if (isEmpty(S)) {return -1;}else {Node* node = S->next;int data = node->data;S->next = node->next;free(node);return data;}
}//遍历
void printStack(Node* S) {Node* node = S->next;while (node){printf("%d->", node->data);node = node->next;}printf("NULL\n");
}int main() {Node* S = initStack();push(S, 1);push(S, 2);push(S, 3);push(S, 4);printStack(S);int i = pop(S);printf("current elem=%d\n", i);printStack(S);return 0;
}
数据结构-栈(C语言代码)相关推荐
- 表达式求值(数据结构栈,c语言版)
表达式求值 一.实验题目 1.案例分析 2.案例实现 3.算法步骤 4.算法描述 二.工具环境 三.实验问题 四.实验代码 一.实验题目 1.案例分析 任何一个表达式都是由操作数(operand)运算 ...
- 数据结构——栈(C语言)
C语言实现栈 github代码下载 一. 栈的概念及结构 二.栈的实现 2.1 栈的存储定义 2.2 栈的初始化 2.3 入栈 2.4 出栈 2.5 获取栈顶元素 2.6 获取栈中有效元素个数 2.7 ...
- 数据结构相关C语言代码
顺序存储结构 #include<stdio.h> #include<stdlib.h>typedef struct Arr {int *pBase;//第一个下标的地址 (类似 ...
- 数据结构-队(C语言代码)
只允许在一端进行插入,在另一端进行删除的操作的线性表,又称为先进先出(First In First Out)线性表,简称FIFO 队头:允许进行删除操作的一端 队尾:允许进行插入操作的一端 空队:不含 ...
- 数据结构—冒泡排序 C语言代码实现(从前向后/从后向前两种)
冒泡排序的思想就是交换,假设要使序列排为递增 如果从左到右比较,则如果左边的比较大就交换, 如果从右向左比较,则右边的比较小就交换. //冒泡排序-从左到右交换 void Bubblesort(int ...
- java语言链栈_Java语言实现数据结构栈代码详解
近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...
- Go语言_数据结构_栈(包括入栈和出栈,表达式的入栈出栈详细过程代码实现)
入栈和出栈代码实现如下: package main import ("fmt""errors" )//使用数组来模拟一个栈的使用 type Stack stru ...
- 数据结构栈的代码实现(C语言)
一 .栈的顺序代码实现 初始化一个空栈 bool InitStack(SqStack *s) {s->base = (ElemType *) malloc(STACK_INIT_SIZE * s ...
- c语言 栈结构存放数据类型,数据结构——栈的详解
栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...
最新文章
- 哈佛结构和冯诺依曼结构区别。
- mysqljs在koa2中的正确姿势
- mysql菜鸟教程update_PHP MySQL Update
- setlocal启动批处理文件中环境变量的本地化
- 业界首发丨网易云信虚拟人解决方案,首创客户端+云端双渲染技术
- ObjectArx创建指定块
- 面试题,你什么时候可以入职?回答不好,容易被压薪资
- system health_Health Hack 2014:开源,开放数据和跨学科协作的力量
- 代理ip网站的ip怎么来的_妙用代理IP,防止IP被封
- day73 中间件 以及模板引擎
- SVM支持向量机-——希尔伯特空间解释
- 【围棋棋盘绘制——html实现】
- Hadoop3.x端口变化
- Xbox One手柄
- 撑不下去的时候,请看看这19张照片
- 机器学习总结(三):矩估计
- java 对接 stripe支付
- matlab神经网络包处理Iris分类预测
- Java单个文件下载
- python单位根检验平稳性怎么看是否平稳_Python关于时间序列的平稳性检验
热门文章
- opencv 边缘检测
- Word2Vec(Efficient Estimation of Word Representations in Vector Space)
- 通过有序数组生成平衡搜索二叉树
- 推荐系统笔记(评价指标及效果)
- 强化学习(五)---基于模型的强化学习实战
- MATLAB实战系列(二十九)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)-交叉算子
- 深入Python(2): __init__.py 用法
- LeetCode-动态规划基础题-63. 不同路径II
- elasticsearch的join查询
- Coroutine in Java - Quasar Fiber实现--转载