一. 栈 栈的定义:栈是只允许在一端进行插入或删除操作的线性表. 1.栈的顺序存储 栈顶指针:S.top,初始设为-1 栈顶元素:S.data[S.top] 进栈操作:栈不满时,栈顶指针先加1,再到栈顶元素 出栈操作:栈非空时,先取栈顶元素,再栈顶指针减1 栈空条件:S.top=-1 栈满条件:S.top=MaxSize-1 栈长:S.top+1 (1)结构 typedef struct{ ElemType data[MaxSize]; int top;//栈顶 }Stack; (2)初始化空栈…
一. 队列 1.队列定义:只允许在表的一端进行插入,表的另一端进行删除操作的线性表. 2.循环队列:把存储队列的顺序队列在逻辑上视为一个环. 循环队列状态: 初始时:Q.front=Q.rear=0 front指针移动:Q.front=(Q.front+1)%MaxSize rear指针移动:Q.rear=(Q.rear+1)%MaxSize 队列长度:(Q.rear+MaxSize-Q.front)%MaxSize 队空条件:Q.front=Q.rear 队满条件:Q.front=Q.rear…
一.线性表的顺序存储 typedef int ElemType;typedef struct List { ElemType *data;//动态分配 ,需要申请空间 int length; }List; 0.完整代码 #include <stdio.h> #include <stdlib.h> #define MaxSize 50 #define TRUE 1 #define FALSE 0 typedef int ElemType ; struct List { ElemTyp…
前几章已经介绍到了顺序存储.链式存储 顺序存储:初始化.插入.删除.定位 链式存储:初始化.插入.删除.定位 顺序存储:初始化 strudt student{ int ID://ID char name[30];//姓名 char sex; //性别 int class;//班级 int age;//年龄 } student={"01",“zhangsan”,"m","201","20"}: 链式存储:初始化 //建立一个空链…
本文根据<大话数据结构>一书,实现了Java版的栈的顺序存储结构.两栈共享空间.栈的链式存储机构. 栈:限定仅在表尾进行插入和删除操作的线性表. 栈的插入(进栈)和删除(出栈)操作如下图所示.   1.栈的顺序存储结构 用数组存放数据,top变量来指示栈顶元素在数组中的位置(栈顶指针).一个长度为5的栈的示意图如下: 实现程序: /** * 栈的顺序储存结构 * * 问题:构造器中,泛型数组创建是否有更好的方法? * @author Yongh * */ public class SqStac…
温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift语言是面向对象语言,所以在相关示例实现的时候与之前在大学学数据结构时C语言的实现有些出入,不过数据结构还是要注重思想,至于实现语言是面向对象的还是面向过程的影响不大. 接触过数据结构的小伙伴应该都知道程序 = 数据结构 + 算法.数据结构乃组织组织数据的结构,算法就是对这些结构中的数据进行操作,可见…
//线性表的顺序存储 #include <stdio.h>typedef int DataType;#define MaxSize 15//定义顺序表typedef struct { DataType List [MaxSize]; int Size;}Slist;//初始化顺序表void ListInit(Slist * S){S->Size=0; }//插入数据int ListInsert(Slist *S ,int i,DataType x){        int j;     …
之前是由于学校工作室招新,跟着大伙工作室招新训练营学习数据结构,那个时候,纯碎是小白(至少比现在白很多)那个时候,学习数据结构,真的是一脸茫然,虽然写出来了,但真的不知道在干嘛.调试过程中,各种bug也不懂怎么修改,那个时候,电脑一直被我弄蓝屏,这个寒假,重新学习一遍数据结构,获益良多,整理一下,发布出来,求拍砖,共同进步. 线性表(List),0个或者多个数据元素的有限序列 线性表的顺序存储,即线性表通过数组的方式实现,指用一段地址连续的存储单元一次存储线性表的数据元素.如图: A1 A2 -…
#include <stdio.h> #include <malloc.h> #define N 10 typedef struct Node { int data; struct Node *next; }Node, *LinkedList; void initList(LinkedList *L); int ListInsert(LinkedList *L, int index, int e); int ListDelete(LinkedList *L, int index,…
SeqList.h #ifndef _WBM_LIST_H_ #define _WBM_LIST_H_ typedef void List; typedef void ListNode; //创建并且返回一个空的线性表 List* List_Create(); //销毁一个线性表list void List_Destroy(List* list); //将一个线性表list中的所有元素清空, 线性表回到创建时的初始状态 void List_Clear(List* list); //返回一个线性表…