LinkList.h:


#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 1024
#define TRUE 1
#define FALSE 0typedef struct LINKLIST {void* data[MAX_SIZE];int size;}LinkList;//初始化
LinkList* Init_linkList();//压入元素
void Push_LinkList(LinkList* stack, void* data);//取出栈顶元素
void* Top_LinkList(LinkList* stack);//弹出栈顶元素
void Pop_LinkList(LinkList* stack);//判断是否为空
int IsEmpty_LinkList(LinkList* stack);//返回栈元素个数
int Size_LinkList(LinkList* stack);//清空栈元素
void Clear_LinkList(LinkList* stack);
//销毁栈元素
void FreeSpace_LinkList(LinkList* stack);

LinkList.c

#include"LinkList.h"//初始化
LinkList* Init_linkList()
{LinkList* stack = (LinkList*)malloc(sizeof(LinkList));stack->size = 0;   //问题1:数组的长度是否可以自己获取???for (int i = 0; i < MAX_SIZE; i++){stack->data[i] = NULL;}return stack;
}//压入元素
void Push_LinkList(LinkList* stack, void* data)
{if (stack == NULL){return;}if (data == NULL){return;}stack->data[stack->size] = data;stack->size++;
}//取出栈顶元素
void* Top_LinkList(LinkList* stack)
{if (stack == NULL){return NULL;}return stack->data[stack->size - 1];
}//弹出栈顶元素
void Pop_LinkList(LinkList* stack)
{if (stack == NULL){return ;}stack->data[stack->size - 1] = NULL;stack->size--;
}//判断是否为空
int IsEmpty_LinkList(LinkList* stack)
{if (stack == NULL){return -1;}if (stack->size == 0){return TRUE;}elsereturn FALSE;
}//返回栈元素个数
int Size_LinkList(LinkList* stack)
{if (stack == NULL){return -1;}return stack->size;
}//清空栈元素
void Clear_LinkList(LinkList* stack) {if (stack == NULL){return;}for (int i = 0; i < MAX_SIZE; i++){stack->data[i] = NULL;}stack->size = 0;
}
//清空栈元素
void FreeSpace_LinkList(LinkList* stack)
{if (stack == NULL){return;}free(stack);
}

栈的顺序存储.c:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include"LinkList.c"typedef struct PERSON {char name[64];int age;
}Person;
int main()
{Person p1 = { "aaa",12 };Person p2 = { "bbb",13 };Person p3 = { "ccc",14 };Person p4 = { "ddd",15 };Person p5 = { "eee",19 };LinkList* stack = Init_linkList();Push_LinkList(stack, &p1);Push_LinkList(stack, &p2);Push_LinkList(stack, &p3);Push_LinkList(stack, &p4);Push_LinkList(stack, &p5);while (Size_LinkList(stack) > 0){Person* p=(Person*)Top_LinkList(stack);printf("Name:%s Age:%d\n", p->name, p->age);Pop_LinkList(stack);}FreeSpace_LinkList(stack);return 0;
}

运行结果:

数据结构-栈1-顺序存储相关推荐

  1. 数据结构——栈的顺序存储结构

    一.栈的概念 栈是一种操作受限的,只允许一端进行插入和删除的线性表,允许进行操作的一端叫做栈顶(top),另一端为栈底(bottom),插入操作为入栈或进栈,删除操作称为出栈或退栈. 二.栈的顺序存储 ...

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

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

  3. 大话数据结构-栈与队列

    文章知识点来至于大话数据结构里边章节知识, 这篇主要介绍栈与队列在计算机中存储形式, 以及在某些算法领域中对栈和队列的相关应用.章节最后介绍了著名的逆波兰表达式, 以及通过算法来实现该表达式的运算过程 ...

  4. 数据结构栈队列链表数组

    目录: 数据结构 栈(stack) 队列 链表 数组 数据结构 数据结构是什么 简单来说,数据结构就是设计数据以何种方式存储在计算机中 比如:列表,集合,与字典等都是一种数据结构 程序 = 数据结构 ...

  5. 数据结构栈和队列_使您的列表更上一层楼:链接列表和队列数据结构

    数据结构栈和队列 When you want to store several elements somewhere in a program, the go-to data type is an a ...

  6. 大话数据结构—栈与队列

    栈 一.栈的定义 栈是(stack)是限定尽在表尾进行插入和删除操作的线性表. 栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构. 二.进栈出栈变化形式 注意: 并不是 ...

  7. 数据结构——栈和队列

    目录 1.栈 1.1栈的基本概念 1.2栈的顺序存储实现 1.3共享栈 1.4栈的链式存储实现 1.5栈在括号匹配中的应用 1.6栈在表达式求值中的应用 1.6.1中.前.后缀表达式 1.6.2后缀表 ...

  8. 【数据结构-堆栈(顺序存储)GO语言实现】

    [数据结构-堆栈(顺序存储)GO语言实现] 顺序存储的堆栈可以看作是一个操作被限制的数组,遵循着后进先出**(LIFO)**的原则. 顺序存储的堆栈代码arrayStack.go package st ...

  9. 11.0、C语言数据结构——栈

    11.0.C语言数据结构--栈 栈的定义:         栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式:         官方定义:栈(stack)是一个 后进先出(Las ...

  10. 王道——数据结构——栈和队列(1)

    系列文章目录 其他章节相关文章 王道--数据结构--树与二叉树(1) 本章节其他相关文章 文章目录 系列文章目录 其他章节相关文章 本章节其他相关文章 前言 一.栈的顺序存储 一.顺序栈 二.共享栈 ...

最新文章

  1. [算法] 求环形数组中和值最大子段
  2. java wav 波形_java读取wav文件(波形文件)并绘制波形图的方法
  3. springboot微信支付pc页面生成二维码
  4. Java未来路在何方?图文详解!
  5. 内核中的UDP socket流程(1)
  6. python中usecols_Python学习路线?
  7. WPF 界面提示加载出错
  8. mysql系统属性,mysql
  9. 采用路径模型实现遍历二叉树的方法
  10. 五种常见的linux系统有哪些,常见的Linux操作系统有哪些
  11. 服务器拒绝mac访问共享文件,Mac共享文件连接失败怎么办?Mac无法访问打开共享文件解决方法...
  12. C语言读写txt文件
  13. php免费项目下载文件,php——文件下载
  14. 图灵奖得主Bengio和LeCun称自监督学习可使AI达到人类智力水平
  15. 解决Maven项目pom.xml文件报xxx\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)问题
  16. Mongodb模式设计
  17. 利用指针作为游标,编写程序完成将输入字符串复制到一个字符数组中,要求每复制三个字符之后插入一个空格。 例如,若给a输入字符串:ABCDEFGHKIJK,字符数组中的内容为:ABC DEF GH
  18. 【Mysql】数据库的设计学习笔记
  19. 预见2020下半场——从自动驾驶新趋势看普及前景
  20. 获得32位UUID字符串和指定数目的UUID

热门文章

  1. 解决MongoDB Compass
  2. android开机后自动执行shell,init.rc启动 shell脚本
  3. python模块导入_python模块导入
  4. oracle连接数达不到上限,Oracle超出最大连接数问题及解决(转)
  5. excel分段排序_学会这个神操作,报表填报不再五花八门,效率远超Excel
  6. 使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据
  7. 多线程中 start()和run()方法的区别
  8. linux下tomcat部署java web项目_求助帖 linux服务器 tomcat部署javaweb项目问题
  9. x86_64 arm制linux-gcc,arm-linux-gcc 制作
  10. c++ stl 容器 迭代器 stl用法示例