数据结构
不定时更新数据结构demon
45°的阳光
虽然你变秃了,但是你变强了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单向链表的基本应用-增删改查
一、单向链表功能函数初始化 /*********************************************/ /*demon:单向链表 author:乐乐 */ /********************************************/ typedef char data_t; //1.定义单向链表结构体 typedef struct node_t { data_t data; struct node_t *next; }linknod原创 2020-07-07 23:49:35 · 308 阅读 · 0 评论 -
c语言双向链表的增、删、改、查
双向链表与单向链表相比,多了一个前驱(指向前一个节点的指针,初始化多加一个前驱指针即可) 双向链表增、删、改、查demon #include<stdio.h> #include<stdlib.h> typedef struct double_list{ char* data; struct double_list *next; //后继---指向下个节点 struct double_list *prev;//前驱---指向上一个节点 }d_list; typedef s原创 2020-08-26 18:49:47 · 603 阅读 · 0 评论 -
c语言实现一个队列——数据结构
一、队列理论 1.队列是一种受约束的线性表,一端插入,另一端移除数据,数据先进先出 二、程序demon #include<stdio.h> #include<stdlib.h> #define QUEUE_SIZE 4 typedef struct{ char *data[QUEUE_SIZE];//存放指针的数组,队列大小是QUEUE_SIZE-1 int prev; int next; }queue_t; //1.初始化一个队列 queue_t *create_原创 2020-08-27 14:06:56 · 513 阅读 · 0 评论 -
宏函数实现队列
队列demon——待完善 #include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <string.h> typedef void *QUEUE[2]; /* Private macros. */ #define QUEUE_NEXT(q) (*(QUEUE **) &((*(q))[0])) #define QUEUE_PREV(q) (*(QU原创 2020-09-18 18:42:18 · 292 阅读 · 0 评论 -
内核链表
代码demon #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 20 struct dl_list { struct dl_list *next; struct dl_list *prev; }; //初始化链表,前驱等于后继 static inline void dl_list_init(struct dl_list *list) { list->next原创 2020-09-18 13:06:03 · 353 阅读 · 0 评论 -
数据结构——冒泡算法
冒泡算法:是排序算法中的基本算法,基本概念就是逐个比较大小,由开始到末尾逐次比较,比较一次确定一个数的位置,例如数组元素个数n,则比较(n-1)+(n-2)+…+1次。 demon: #include<stdio.h> void bubble_sort(int *arry,int n) { int tmp,i,j; for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) if(arry[j]>arry[j+1]) { tmp原创 2020-08-18 16:51:25 · 921 阅读 · 0 评论 -
直插排序——C语言
#include <stdio.h> //直插排序,左边依次变为有序排序 void direct_insertion_sort(int value[],int low,int high) { int i,j,temp; for(i = 0;i< high; i++) { j = i; temp = value[j]; while(j > 0 && value[j] < value[j - 1]) { value[j] = value原创 2021-02-22 10:55:18 · 198 阅读 · 0 评论 -
希尔排序
#include <stdio.h> void sort(int a[],int n) { int i,j,increment,temp; increment = n/2;//增量 while(increment >= 1) { for(i=increment;i<n;i++) { temp = a [i]; j =i-increment; while(j>=0 && temp < a[j])//分组进行直排 {原创 2021-02-22 15:50:55 · 156 阅读 · 0 评论 -
快排——C语言
#include<stdio.h> void sort(int a[],int low,int high) { int left = low; int right = high; int key = a[left]; if(left > right ) return ; while(left < right) { //从右往左找比Key小的值 while(left < right && a[right] >= key)原创 2021-02-22 10:17:34 · 174 阅读 · 0 评论 -
数据结构——什么是树和二叉树
一、树的定义 树:n(>=0)个节点的有限集,当n=0时为空树(没有根节点) 非空树特点: 1.只有一个根节点 2.当节点数n>1时,其他的节点可分为m(>0)个没有交集的集合,每一个单独的集合都是一个树(子树)。 下图是一个简单的树形结构 其中根节点是A,B、E是A的子节点,同时以B、E为父节点的是子树 二、树的形容 1.节点的度数:一个节点拥有子树的大小称为节点的度(如图上A节点的度是2,拥有2个子树) 2.树的度:树的度是取节点中节点最大的度为树的度(上图节点最大是2,所以树的度是原创 2020-08-16 15:22:59 · 743 阅读 · 0 评论 -
数据结构——树与二叉树的存储方式
一、树的存储方式 1.顺序结构存储:用一组地址连续的存储单元去存放树的节点,每个节点有俩个存放数据的空间,data——存放节点的信息,parent——存放节点父节点位置 如图: 2.链式存储:每个节点的子节点用单链表的方式存储起来,称为子链表,这样存储的话,n个节点就有n个链表 二、二叉树的存储方式 1.顺序存储结构(从上到下,从左到右) 图例: 2.链式存储 1.链式存储结构: //二叉链表 typedef struct tree_node { data_t data;//数据 struct t原创 2020-08-16 16:52:53 · 2140 阅读 · 0 评论 -
数据结构——二叉树的遍历
一、遍历二叉树 按一定的规律对二叉树进行每个节点的访问,且每个节点只访问1次。 遍历方案有: DLR(根左右):先序遍历, LDR(左根右):中序遍历 LRD(左右根):后序遍历 上诉遍历方法遵循左>右的规则,对根节点的访问进行了前、中、后三种不同的访问时间区分。 //创建二叉树 typedef struct node_t { char data; struct node_t *lchild; //指向左子节点的指针 struct node_t *rchild; //指向右子节点的指针 }tr原创 2020-08-16 17:41:45 · 233 阅读 · 0 评论
分享