
数据结构
三明治手抓饼
这个作者很懒,什么都没留下…
展开
-
2020-10-31
二叉树二叉树的绝大多数操作都可以采用递归的方法来实现方块类型的变量代表一整颗树,圆圈类型的变量只代表一个节点有序二叉树: 任何一个树的左子树上都比他的节点的数小,右子树比节点的数大,则为有序二叉树树的遍历: 依次处理树的每一个节点,需要通过递归来实现树的遍历一定是先遍历左子树然后遍历右子树根节点的处理顺序:在处理子树之前处理根节点, 前序遍历在两个子树之间处理根节点,中序遍历处理两个子树之后处理根节点,后续遍历头文件#ifndef __TREE__H#define __TREE原创 2020-10-31 20:53:06 · 88 阅读 · 0 评论 -
2020-10-31
双向链表正向和反向遍历双向链表增加正向和反向的遍历需要注意的是,由于遍历的过程是一个指针记录了当前节点的位置,因此在遍历过程中,不允许有改变链表结构的操作(比如增加,删除,插入节点)头文件#ifndef __03_LINK__H#define __03_LINK__Htypedef struct node { int val; struct node * p_next; struct node * p_prev;} node_t;typedef struct { node_原创 2020-10-31 00:08:23 · 103 阅读 · 0 评论 -
2020-10-25
顺序链表的构建:只能从链表头向链表尾部存储和遍历头文件:#ifndef __03_LINK__H#define __03_LINK__Htypedef 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 · 83 阅读 · 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 · 78 阅读 · 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 · 70 阅读 · 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 · 86 阅读 · 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 · 77 阅读 · 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 · 83 阅读 · 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 · 80 阅读 · 0 评论