栈(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语言代码)相关推荐

  1. 表达式求值(数据结构栈,c语言版)

    表达式求值 一.实验题目 1.案例分析 2.案例实现 3.算法步骤 4.算法描述 二.工具环境 三.实验问题 四.实验代码 一.实验题目 1.案例分析 任何一个表达式都是由操作数(operand)运算 ...

  2. 数据结构——栈(C语言)

    C语言实现栈 github代码下载 一. 栈的概念及结构 二.栈的实现 2.1 栈的存储定义 2.2 栈的初始化 2.3 入栈 2.4 出栈 2.5 获取栈顶元素 2.6 获取栈中有效元素个数 2.7 ...

  3. 数据结构相关C语言代码

    顺序存储结构 #include<stdio.h> #include<stdlib.h>typedef struct Arr {int *pBase;//第一个下标的地址 (类似 ...

  4. 数据结构-队(C语言代码)

    只允许在一端进行插入,在另一端进行删除的操作的线性表,又称为先进先出(First In First Out)线性表,简称FIFO 队头:允许进行删除操作的一端 队尾:允许进行插入操作的一端 空队:不含 ...

  5. 数据结构—冒泡排序 C语言代码实现(从前向后/从后向前两种)

    冒泡排序的思想就是交换,假设要使序列排为递增 如果从左到右比较,则如果左边的比较大就交换, 如果从右向左比较,则右边的比较小就交换. //冒泡排序-从左到右交换 void Bubblesort(int ...

  6. java语言链栈_Java语言实现数据结构栈代码详解

    近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...

  7. Go语言_数据结构_栈(包括入栈和出栈,表达式的入栈出栈详细过程代码实现)

    入栈和出栈代码实现如下: package main import ("fmt""errors" )//使用数组来模拟一个栈的使用 type Stack stru ...

  8. 数据结构栈的代码实现(C语言)

    一 .栈的顺序代码实现 初始化一个空栈 bool InitStack(SqStack *s) {s->base = (ElemType *) malloc(STACK_INIT_SIZE * s ...

  9. c语言 栈结构存放数据类型,数据结构——栈的详解

    栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...

最新文章

  1. 哈佛结构和冯诺依曼结构区别。
  2. mysqljs在koa2中的正确姿势
  3. mysql菜鸟教程update_PHP MySQL Update
  4. setlocal启动批处理文件中环境变量的本地化
  5. 业界首发丨网易云信虚拟人解决方案,首创客户端+云端双渲染技术
  6. ObjectArx创建指定块
  7. 面试题,你什么时候可以入职?回答不好,容易被压薪资
  8. system health_Health Hack 2014:开源,开放数据和跨学科协作的力量
  9. 代理ip网站的ip怎么来的_妙用代理IP,防止IP被封
  10. day73 中间件 以及模板引擎
  11. SVM支持向量机-——希尔伯特空间解释
  12. 【围棋棋盘绘制——html实现】
  13. Hadoop3.x端口变化
  14. Xbox One手柄
  15. 撑不下去的时候,请看看这19张照片
  16. 机器学习总结(三):矩估计
  17. java 对接 stripe支付
  18. matlab神经网络包处理Iris分类预测
  19. Java单个文件下载
  20. python单位根检验平稳性怎么看是否平稳_Python关于时间序列的平稳性检验

热门文章

  1. opencv 边缘检测
  2. Word2Vec(Efficient Estimation of Word Representations in Vector Space)
  3. 通过有序数组生成平衡搜索二叉树
  4. 推荐系统笔记(评价指标及效果)
  5. 强化学习(五)---基于模型的强化学习实战
  6. MATLAB实战系列(二十九)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)-交叉算子
  7. 深入Python(2): __init__.py 用法
  8. LeetCode-动态规划基础题-63. 不同路径II
  9. elasticsearch的join查询
  10. Coroutine in Java - Quasar Fiber实现--转载