数据结构
三明治手抓饼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2020-10-31
二叉树 二叉树的绝大多数操作都可以采用递归的方法来实现 方块类型的变量代表一整颗树,圆圈类型的变量只代表一个节点 有序二叉树: 任何一个树的左子树上都比他的节点的数小,右子树比节点的数大,则为有序二叉树 树的遍历: 依次处理树的每一个节点,需要通过递归来实现 树的遍历一定是先遍历左子树然后遍历右子树 根节点的处理顺序: 在处理子树之前处理根节点, 前序遍历 在两个子树之间处理根节点,中序遍历 处理两个子树之后处理根节点,后续遍历 头文件 #ifndef __TREE__H #define __TREE原创 2020-10-31 20:53:06 · 106 阅读 · 0 评论 -
2020-10-31
双向链表 正向和反向遍历 双向链表 增加正向和反向的遍历 需要注意的是,由于遍历的过程是一个指针记录了当前节点的位置,因此在遍历过程中,不允许有改变链表结构的操作(比如增加,删除,插入节点) 头文件 #ifndef __03_LINK__H #define __03_LINK__H typedef struct node { int val; struct node * p_next; struct node * p_prev; } node_t; typedef struct { node_原创 2020-10-31 00:08:23 · 124 阅读 · 0 评论 -
2020-10-25
顺序链表的构建: 只能从链表头向链表尾部存储和遍历 头文件: #ifndef __03_LINK__H #define __03_LINK__H typedef struct node { int val; struct node * p_next; } node_t; typedef struct { node_t head; node_t tail; } link_t; void link_init(link_t * p_link); void link_deinit(link_t *p_l原创 2020-10-25 22:18:37 · 100 阅读 · 0 评论 -
2020-10-24
循环队列更加的合理,节省内存和空间 为了能够在一定空间内完成循环队列,需要记录队列尾部的位置以及队列中成员数量,根据这两个可以计算出头的位置,从而完成循环队列。 02_queue.h #ifndef _02_QUEUE__ #define _02_QUEUE__ typedef struct { int buf[SIZE]; int tail; // last number + 1 int qty; // queue number } queue_t; void queue_init(原创 2020-10-24 13:05:40 · 96 阅读 · 0 评论 -
2020-10-24
实现单向链表的操作 头文件 queue.h #ifndef __QUEUE_H__ #define __QUEUE_H__ typedef struct { int buf[SIZE]; int head; // remember first data int tail; // remember last data } queue_t; void queue_init(queue_t * ); void queue_deinit(queue_t *); int queue_size(con原创 2020-10-24 11:04:34 · 88 阅读 · 0 评论 -
2020-10-22
栈的编写 其实是一个数组+ 记录栈空间元素个数的qty 栈的头文件stack.h #ifndef __STACK_H_ #define __STACK_H_ #include<stdio.h> typedef struct { int buf[SIZE]; int qty; } stack_t; void stack_init(stack_t * ); void stack_deinit(stack_t *); int stack_size (const stack_t *);原创 2020-10-22 22:19:19 · 106 阅读 · 0 评论 -
2020-10-18
初始化一个空链表,并且动态的插入数据 #include<stdio.h> #include <stdlib.h> typedef struct node { int val ; struct node * p_next; } node_t; int main() { int val = 0; node_t head = {0},tail = {0}; node_t * p_node = NULL, *p_first = NULL, *p_mid = NULL, *p原创 2020-10-18 13:17:19 · 100 阅读 · 0 评论 -
2020-10-17
C语言中 链表的 增加一个节点和删除一个节点 #include<stdio.h> typedef struct node { int val; struct node * p_next; } node_t; int main() { node_t node1 ={10},node2 ={20},node3={30} ,head = {0}, tail = {0}; head.p_next = &node1; node1.p_next = &node2; node2.原创 2020-10-17 23:01:38 · 97 阅读 · 0 评论 -
2020-10-17
最简单的链表 #include<stdio.h> typedef struct node { int val; struct node * p_next; // 下一个节点依然是一个 node 类型的节点 } node_t; int main() { node_t node1 ={10},node2 ={20},node3={30}; node1.p_next = &node2; node2.p_next = &node3; return 0; } ...原创 2020-10-17 14:58:14 · 99 阅读 · 0 评论
分享