数据结构
学习笔记
cdhuangjin-
生命很短,让他精彩一点!
展开
-
简单选择排序C语言详解
学习笔记编译环境:vc6.0#include <stdio.h>//*******************交换数组a,下标为i,j的值******************int swap(int a[], int i, int j){ int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; return 0;}//*...原创 2020-03-29 14:38:52 · 365 阅读 · 0 评论 -
快速排序C语言详解
学习笔记编译环境;vc6.0#include <stdio.h>//*********************快速排序******************int Partition(int a[], int low, int high){ int pivotkey; //pivotkey枢轴关键字 pivotkey = a[low]; //...原创 2020-03-29 13:52:51 · 296 阅读 · 0 评论 -
冒泡排序C语言详解
编译环境:vc6.0#include <stdio.h>#pragma warning(disable:4996)//*********************交换函数******************int swap(int a[], int i, int j){ int temp; temp = a[i]; a[i] = a[j]; a[j] = temp;...原创 2020-03-29 12:42:28 · 723 阅读 · 0 评论 -
希尔排序C语言详解
编译环境:vc6.0/*给数组a[]排序,a[0]空着,作为整理牌时的临时存储空间,类似于swap里面的temp;*/#include <stdio.h>//*************************希尔排序******************void ShellSort(int a[]){ int i, j; int increment = 11; ...原创 2020-03-29 11:08:58 · 410 阅读 · 0 评论 -
直接插入排序C语言详解
编译环境:vc6.0/*类似于扑克牌,摸牌和整理牌的过程给数组a[]排序,a[0]空着,作为整理牌时的临时存储空间,类似于swap里面的temp;第一张牌存放到a[1],若第二张牌a[2]比a[1]小,将a[2]存放到临时空间a[0],a[1]移动到a[2],a[0]再赋值给a[1].类似于一个swap操作第三张牌以此类推*/#include <stdio.h>#in...原创 2020-03-29 10:24:13 · 251 阅读 · 0 评论 -
递归折半查找C语言详解
C语言编译环境:vc6.0/*折半查找是对有序序列的查找*/#include <stdio.h>#include <stdlib.h>int Binary_Search(int a[], int key, int low, int high) //数组地址a,查找关键字key,最低下标low,最高下标high{ int mid = (low + hi...原创 2020-03-28 17:24:28 · 878 阅读 · 0 评论 -
拓扑排序C语言详解
1. 拓扑排序是对有向无环图的操作。2. 如果有环,则会出现,没有入度为0的点的情况,如图。任务之间相互等待。3. 逐步输出入度为0的点,当入度为0的点有多个时,随意输出。4. 建立一个栈的辅助空间,存放入度为0的点,避免每次都需遍历寻找是否有入度为0的结点。5. 由第三点,显然拓扑排序结果不唯一。实现如图AOV网的拓扑排序对应的邻接表核心代码://*************...原创 2020-03-28 15:24:19 · 1099 阅读 · 1 评论 -
图的BFS(广度优先)实现C语言
实现如图(邻接矩阵)的BFS核心代码:void BFStraverse(MGraph G){ int i, j; SqQueue Q; //辅助队列 for (i = 0; i < G.numVertexes; i++) visited[i] = 0; //初始化都为0 InitQueue(&Q); //初始化辅助队...原创 2020-03-27 18:04:40 · 4685 阅读 · 0 评论 -
图的DFS(深度优先搜索)C语言详解
实现如图的BFS(邻接矩阵)核心代码//********************深度优先的递归算法********************void DFS(MGraph G, int i){ int j; visited[i] = 1; printf("%c", G.verx[i]); //输出顶点信息 for (j = 0; j < G.numVertexes; j+...原创 2020-03-27 16:32:23 · 2443 阅读 · 0 评论 -
图的邻接表的实现C语言详解
实现如图邻接表:共个顶点,v0,v1,v2,v3;共5条边:arc[0][1],arc[0][2],arc[0][3],arc[2][1],arc[2][3]。编译环境vc6.0,代码如下原创 2020-03-27 15:21:59 · 2716 阅读 · 0 评论 -
图的邻接矩阵实现C语言
实现如图邻接矩阵:编译环境:vc6.0,代码如下/*顶点数据类型为char,边上权值类型为int*/#include <stdio.h>#include <stdlib.h>#define MAXVEX 100 //最大顶点数#define INFINITY 99999 //用99999表示无限大//*****************...原创 2020-03-27 11:54:33 · 3057 阅读 · 2 评论 -
二叉树的基本操作C语言详解
1、链表结构代码typedef struct Node{ char data; //数据域 struct Node* Lchild, * Rchild; //左右孩子指针}BTNode,*BTree;2、创建二叉树int CreateBTree(BTree* T){ char ch; scanf("%c", &ch); if (ch == '#'...原创 2020-03-25 17:10:12 · 10113 阅读 · 15 评论 -
链式队列的基本操作C语言详解
链式队列有带头结点,和不带头结点的,我这里是带头结点的。逻辑结构如图编译环境vc6.0,代码如下:/*首元结点是指链表中存储线性表中第一个数据元素的结点。初始化:队头指针和队尾指针都指向头结点(不是首元结点)队满状态:只要还有内存,理论上不会满进队操作:插入到链尾,尾指针指向新的尾结点出头操作:删除首元结点(不是头结点),头指针指向新首元结点*/#include <s...原创 2020-03-24 17:28:48 · 4081 阅读 · 0 评论 -
顺序队列的基本操作C语言详解
逻辑存储结构如图:编译环境:vc6.0,代码如下/*对头指针指向对头元素,队尾指针指向队尾元素的下一个位置。初始状态(队空状态)Q.front==Q.rear==0队满状态:Q.rear==MaxSize(可能是假满)进队操作:队不满时,先送值到队尾元素,再将队尾指针加1出队操作:队不空时,先取队头元素值,再将对头指针加1*/#include <stdio.h>#i...原创 2020-03-24 14:56:05 · 3831 阅读 · 1 评论 -
循环队列基本操作C语言详解
循环队列:把头尾相接的顺序存储结构称为循环队列原创 2020-03-24 14:54:56 · 2294 阅读 · 4 评论 -
链栈的基本操作C语言详解
1. 带头结点和不带头结点的链栈实现方式不同,我这里是不带头结点的链栈。2. 头指针(Lhead):不是头结点的指针,是指向头结点(首元结点)的指针,无论链栈是否为空,头指针均存在。3. 二级指针:指向指针变量的指针。4. 存储结构5. 编译环境:vc6.0。代码如下:#include <stdio.h>#include <stdlib.h>//存储类型结...原创 2020-03-24 12:43:31 · 4872 阅读 · 8 评论 -
顺序栈的9大基本操作C语言详解
有些书,top=0时表示空栈,有些书top= -1时表示空栈,我这里参考严蔚敏老师一书top=0时为空栈。有些书,栈非空时top指向栈顶元素,有些书非空时top指向栈顶元素的下一个位置,我这里参考严蔚敏老师一书,top指向栈顶元素的下一个位置。代码如下,编译环境vc6.0:#include <stdio.h>#include <stdlib.h>#define...原创 2020-03-22 19:01:19 · 794 阅读 · 0 评论 -
循环双链表的基本操作C语言详解
1. 尾指针:不是尾结点的指针,是指向尾结点的指针2. 头指针:不是头结点的指针,是指向头结点的指针,无论链表是否为空,头指针均不为空。3. 头结点:放在第一个结点之前的结点(“零结点”),数据域可以不存放东西,也可以存放链表信息(如链表长度)。循环链表的存储结构typedef struct DulNode //双循环链表的存储结构{ int data; ...原创 2020-03-22 15:27:00 · 861 阅读 · 0 评论 -
单链表的基本操作C语言详解
1. 单链表:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。2. 头指针:是指向头结点的指针,无论链表是否为空,头指针均不为空。3. 头结点:放在第一个结点之前的结点(“零结点”),数据域可以不存放东西,也可以存放链表信息(如链表长度)。单链表的存储结构typedef struct Node //单链表的存储结构,Node是结构体类型名,"s...原创 2020-03-21 16:11:56 · 6570 阅读 · 3 评论 -
C语言顺序表的12个基本操作(增删改查等)
参考严蔚敏数据结构编译环境:vc++6.0总共12大操作初始化InitList(*L); //构造空线性表L销毁DestoryList(*L); //销毁线性表L清空ClearList(*L); //清空线性表L判表空ListEmpty(L); //判断线性表是否为空求表长Length(L); //求线性表元素个数按位查找Get...原创 2020-03-20 17:19:21 · 13570 阅读 · 0 评论