数据结构
文章平均质量分 55
不说话的白帽子
超喜欢机器人,希望以后能做嵌入式软件开发,有志同道合的朋友共同交流交流哟!
展开
-
队列
栈的应用括号匹配问题最后的左括号会最先被匹配(LIFO)遇到左括号就入栈;每出现一个右括号,就消耗一个左括号。表达式求值问题算术表达式:操作符、运算符、界限符中缀表达式:运算符在两个操作符中间后缀表达式(逆波兰表达式):运算符在两个操作数后面前缀表达式(波兰表达式):运算符在两个操作数前面中缀表达式后缀表达式前缀表达式a+bab++aba+b-cab+ c-- +ab ca+b-c*dab+ cd* -- +ab *cd原创 2021-05-06 20:49:30 · 149 阅读 · 0 评论 -
数据结构--队列的基础知识
队列(Queue)定义:队列是只允许在一端进行插入==(入队)==,在另一端删除(出队)==的线性表先进先出(FIFO)重要术语:队头、队尾、空队尾队列的基本操作InitQueue(&Q):初始化队列,构造一个空队列QDestroyQueue(&Q):销毁队列,销毁并释放队列Q所占的内存空间==(创、销)==EnQueue(&Q,x):入队,若队列Q未满,将x加入。使之成为新的队尾==(增)==DeQueue(&Q,&x):出队,若队列Q非空,删除队原创 2021-04-27 20:16:44 · 537 阅读 · 0 评论 -
数据结构--栈
栈(stack)栈是只允许在一端进行插入或删除操作的线性表重要术语:栈顶、栈底、空栈栈顶:允许插入和删除的一端,栈顶元素栈底:不允许插入和删除的一端,栈底元素特点:后进先出(LIFO)栈的基本操作InitStack(&S):初始化栈。构造一个空栈S,分配内存空间(创)DestroyStack(&S):销毁栈。销毁并释放栈s所占的内存空间==(销)==Push(&S,x):进栈,若栈s未满,则将x加入使之成为新栈顶==(增)==Pop(&S,&原创 2021-04-27 19:58:43 · 186 阅读 · 0 评论 -
数据结构--顺序表VS链表--王道考研阅读笔记
顺序表VS链表逻辑结构:都属于线性表,都是线性结构存储结构:顺序表优点:支持随机存取、存储密度高缺点:大片连续空间分配不方便,改变容量不方便链表优点:离散的小空间分配方便,改变容量方便缺点:不可随机存取,存储密度低基本操作创建顺序表需要预分配大片连续空间。若分配空间过小,则之后不方便拓展容量,若分配空间过大,则浪费内存资源静态分配:静态数组(容量不可改变)动态分配:动态数组(malloc、free)(容量可改变,但需要移动大量元素,时间代价高)原创 2021-04-25 19:41:48 · 149 阅读 · 0 评论 -
数据结构--静态链表
静态链表单链表:各个结点在内存中星罗棋布静态链表:分配一整片连续的内存空间,各个结点集中安置,用数组方式实现的链表指针指明具体的地址,游标指明下一个元素的数组下标0号结点充当头结点,游标为-1的结点充当尾节点e1的存放地址是 起始地址(addr)+每个节点8B(数据元素4B+游标4B)*接下来要寻找的游标#define MaxSize 10//静态链表的最大长度typedef struct{//静态链表结构类型的定义 ElemType data;//存储数据元素 in原创 2021-04-25 19:40:48 · 126 阅读 · 0 评论 -
数据结构--循环链表
循环链表循环单链表单链表:表尾结点的next指针指向NULL循环单链表:表尾结点的next指针指向头结点初始化的时候检查头结点是否指向它自己//初始化一个循环单链表bool InistList(LinkList &L){ L=(LNode *)malloc(sizeof(LNOde));//分配一个头结点 if(L==NULL)//内存不足,分配失败 return false; L->next=L;//头结点next指向头结点 retu原创 2021-04-25 19:39:58 · 375 阅读 · 0 评论 -
数据结构--双链表
双链表初始化(带头结点)//初始化双链表bool InitDLinkList(DLinkList &L){ L=(DNode *)malloc(sizeof(DNode));//分配一个头结点 if(L==NULL)//内存不足 return false;//分配失败 L->prior=NULL;//头结点的prior永远指向NULL L->next=NULL;//头结点之后暂时还没有结点 return true;}vo原创 2021-04-25 19:38:41 · 120 阅读 · 0 评论 -
单链表的查找和建立
单链表的查找按位查找GetElem(L,i):按位查找,获取表L中第i个位置的元素的值LNode * GetElem(LinkLIst L,int i){ if(i<0) return NULL; LNode *p;//指针p指向当前扫描到的结点 int j=0;//当前p指向的是第几个结点 p=L;//L指向头结点,头结点是第0个结点(不存数据) while(p!==NULL&&j<i){//循环找到第i个结点原创 2021-04-25 19:37:56 · 237 阅读 · 0 评论 -
单链表的插入删除
单链表的插入和删除ListInsert(&L,i,e):插入操作,在表L中的第i个位置上插入指定元素e,(找到第i-1个结点,将新节点插入其后)按位序插入(带头结点)存在第0个结点//在第i个位置插入元素e(带头结点)bool LIstInsert(LinkList &L,int i,ElemTYpe e){ if(i<1) return false; LNode *p;//指针p指向当前扫描到的结点 int j=0;//当前p指向的是第几个原创 2021-04-21 16:26:56 · 1536 阅读 · 1 评论 -
单链表定义
单链表定义特点:每个结点除了存放数据元素外,还要存储指向下一个节点的指针优点:不要求大片连续空间,改变容量方便缺点:不可随机存取,要耗费一定空间存放指针用代码定义一个单链表struct LNode{//定义单链表结点类型 ElemType data;//每个节点存放一个数据元素,data数据域 struct LNode *next;//指针指向下一个节点,next指针域};struct LNode *p=(struct LNode *)malloc(sizeof(struc原创 2021-04-21 16:26:09 · 2170 阅读 · 1 评论 -
数据结构--顺序表--史上最全--王道考研笔记
顺序表定义顺序表采用顺序存储方式,是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系第n个元素第n个元素的存放位置第一个元素LOC(L)第二个元素LOC(L)+数据元素的大小第三个元素LOC(L)+2*数据元素的大小如何知道一个数据元素的大小?C语言:sizeof(ElemType) (ElemType就是你的顺序表中存放的数据元素类型)sizeof(int)=4Bsizeof原创 2021-04-19 15:30:55 · 1064 阅读 · 0 评论 -
数据结构与算法概述--《趣味数据结构》笔记
数据结构与算法概述数据结构是指相互之间存在一种或多种特定关系的数据元素的集合逻辑结构:是数据元素之间的关系集合:集合结构中数据元素除了属于同一个集合外,他们之间没有任何其他的关系线性结构:线性结构中的数据元素之间存在一对一的关系,如:线性表,栈,队列,数组,广义表树形结构:一对多图形结构:多对多存储结构(物理结构):数据元素及其关系在计算机中的存储方式顺序存储:逻辑上相邻的元素在计算机内的存储位置也是相邻的,一定连续==优点:==可以快速定位第几个元素的地址==弊端:=原创 2021-04-14 21:21:09 · 245 阅读 · 1 评论