
数据结构
不定时更新数据结构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 · 264 阅读 · 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 · 552 阅读 · 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 · 465 阅读 · 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 · 233 阅读 · 0 评论 -
内核链表
代码demon#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 20struct 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 · 287 阅读 · 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 · 856 阅读 · 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 · 157 阅读 · 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 · 119 阅读 · 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 · 142 阅读 · 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 · 648 阅读 · 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 · 2041 阅读 · 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 · 195 阅读 · 0 评论