
数据结构
本人学习时的一些实验总结
德哥是程序员
java开发工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速排序与冒泡排序的实现
冒泡排序象一个气泡从河底往上冒的过程一样,每次排序都把最大的数据放到最后,具体的第一趟冒泡排序的过程为:比较第一个数据元素x[0]与第二个数据元素x[1]的大小,若x[0]<x[1],则交换两者的值,否则什么都不做;接着跟x[2],x[3]…比较,直到x[n-1]与下x[n-2]的比较。接着第二、三…趟冒泡排序,过程与上一趟相同,只不过只需比较到比上一趟前一个位置即可。快速排序是冒泡排序的...原创 2020-02-17 15:14:23 · 300 阅读 · 0 评论 -
常用的几种插入排序的c语言实现
插入排序中最基本的就是直接插入排序,除此外还有如下几种常用的插入排序的方法:折半插入排序、2-插入排序、表插入排序、希尔排序等。下面用c语言实现直接插入排序、折半插入排序、希尔排序具体的代码如下:#include<stdio.h>void Insertsort(int x[], int n);//直接插入排序函数的声明void Binsertsort(int x[], int...原创 2020-02-16 21:49:57 · 689 阅读 · 0 评论 -
增长数组的列表功能的实现
该程序的主要用于打破数组定长的限制,并实现增长数组的List的部分功能。这是头文件的代码:#ifndef _ARRAY_H_#define _ARRAY_H_typedef int Elementtype;struct List { Elementtype* a; int n; int c;};void IsoutLitmit(List* p);void AddAt(Lis...原创 2019-10-29 23:29:49 · 230 阅读 · 0 评论 -
链表的游标实现
如果需要使用链表时,而又不能使用指针时,我们就的需要使用链表的游标实现法,具体的介绍如下。首先说明一下链表的指针功能的两个特点:(a)数据存储在一个结构体中,每个结构体包含有数据及指向下一个结构体的指针(b)一个新的结构体可以通过调用malloc函数从系统全局内存得到,并可以通过调用free函数释放。要用游标法实现实现这两个功能,我们这样做:(1)定义一个全局结构体数组,每个数组元素的下标可以...原创 2019-11-08 17:20:06 · 500 阅读 · 0 评论 -
用c语言实现单向链表的增,删,读,打印操作
头文件list.h如下:#pragma once# ifndef _LIST_H_# define _LIST_H_struct Student { char name[20];//姓名 int acount; // 学号 };struct List { Student stud; List* next;};void Addlast(List* p, Student ...原创 2019-09-29 17:42:35 · 180 阅读 · 0 评论 -
用栈判断一个字符串是否平衡
注:(1)本文定义:左符号:‘(’、‘[’、‘{’……右符号:‘)’、‘]’、‘}’…….(2)所谓的字符串的符号平衡,是指字符串中的左符号与右符号对应且相等,如字符串中的如‘(’等左符号与‘)’等右符号对应且相等,则称该字符串平衡。程序的原理该程序用栈来实现判断字符串是否平衡,遍历一个字符串,如遇到左符号(该程序只考虑三种符号:()、[]、{})‘(’、‘[’、‘{’,则入栈;遇到右符...原创 2019-11-14 16:32:06 · 558 阅读 · 0 评论 -
计算算术表达式的值
程序中相关概念的说明中缀表达式:正常的算术表达式,如1+23-3/4后缀表达式:将上述中缀表达式转化为后缀表达式为:123+34/-程序的原理先定义一个栈,将中缀表达式(正常的算术表达式)转化为后缀表达式。遍历一个表达式,遇到运算符时,若为空栈,则直接入栈;若该运算符的优先级高于后等于栈顶运算符的优先级,入栈;否则将栈的所有运算符弹出,该运算符入栈。将中缀表达式转化为后缀表达式后,再定义一...原创 2019-11-17 23:04:32 · 948 阅读 · 0 评论 -
二叉树的三序遍历
三序遍历一棵二叉树如下所示:前序遍历:先访问根节点,接着遍历左节点,最后遍历右节点,上述二叉树的前序遍历如下ILoveYou.中序遍历:先遍历左节点,接着访问根节点,最后遍历右节点,上述二叉树的中序遍历如下oLevIoYu.后序遍历:先遍历左节点,接着遍历右节点,最后访问根节点,上述二叉树的后序遍历如下.oevLouYI.程序的代码#头文件#pragma once#ifndef _...原创 2019-11-24 21:07:22 · 602 阅读 · 0 评论 -
二叉查找树ADT的查找、插入、删除的操作的实现
程序的原理该程序用递归的方法来实现ADT的这些操作,如实现查找操作时,先判断当前节点里的元素与所要查找元素X的大小,若比X小,则向左边递归;若比X大,则向右边递归,其他的操作与此类似。程序的代码#头文件#pragma once#ifndef _FIND_TREE_H_#define _FIND_TREE_H_struct TreeNode;typedef double Eleme...原创 2019-12-06 23:48:35 · 300 阅读 · 0 评论 -
编程实现AVL删除、插入等操作
程序原理该程序用递归的方法来实现AVL的这些操作,如实现查找操作时,先判断当前节点里的元素与所要查找元素X的大小,若比X小,则向左边递归;若比X大,则向右边递归,其他的操作与此类似。但在删除与插入操作时,要判断AVL树是否还满足平衡条件,要相应地进行旋转,由于删除操作时判断是否平衡较困难,本程序假设删除操作不会破坏平衡条件。由于AVL树的许多操作与ADT树相同,故本程序只测试一些不同的操作。程...原创 2019-12-11 23:41:58 · 208 阅读 · 0 评论 -
Huffman编码的c语言实现
在此本人用一个简单的例子来介绍Huffmantree。a ,b,c,d,e频率分别为2、4、1、5、3,首先来建立Huffmantree.a、b、c、d、e分别代表此Hufmantree的5个叶子节点,刚开始时这5个节点代表5棵树,这5棵树组成森林。取森林中频率最小的两棵树,合成一棵二叉树,该二叉树的根节点的频率为这两个叶子结点的频率之和,将这两个频率最小的树从森林中删掉,新的树加入森林,一...原创 2020-02-05 14:38:27 · 2406 阅读 · 0 评论 -
图的深度优先遍历(DFS)与广度优先遍历(BFS)的c语言实现
头文件#pragma warning( disable : 4996)#pragma once#ifndef _GRAPH_H_#define _GRAPH_H_#define MAX_VERTEX_NUM 20typedef int Graphkind;//有向图该值为1、无向图该值为0typedef int InfoType;typedef char VertexType;...原创 2020-02-10 13:11:01 · 5466 阅读 · 2 评论