C数据结构学习笔记
持续更新
刘学.
“生如蝼蚁当立鸿鹄之志,命薄似纸应有不屈之心”
展开
-
从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素
【代码】从有序顺序表中删除其值在给定值s与t之间(要求s原创 2023-03-28 17:39:43 · 400 阅读 · 0 评论 -
删除线性表中所有等于指定值的元素,要求时间复杂度为O(n)
【代码】删除线性表中所有等于指定值的元素,要求时间复杂度为O(n)原创 2023-03-28 17:28:11 · 482 阅读 · 0 评论 -
逆置顺序表中所有的元素,要求算法空间复杂度为O(1)
【代码】逆置顺序表中所有的元素,要求算法空间复杂度为O(1)原创 2023-03-28 16:56:22 · 403 阅读 · 0 评论 -
单链表的新建、查找和删除
单链表的两种新建方式,头插法和尾插法;单链表的两种查询方式,按值查找和按位置查找。原创 2022-12-14 20:17:26 · 839 阅读 · 0 评论 -
线性表的顺序存储(顺序表)的定义、插入删除及查询
顺序表的定义、插入、删除及查询操作代码实现原创 2022-12-09 23:11:58 · 1771 阅读 · 1 评论 -
数值进制转换问题
问题描述:对于键盘输入的任意一个非负十进制整数,打印出与其相等的八进制数。由于上述计算过程是从低位到高位顺序产生的八进制数的各个位,再打印输出,而人类习惯,应从高位到低位进行,恰好与计算过程相反。因此可以先将计算过程中得到的八进制数的各位进栈,等到相对应的八进制数的各位产生后,再按顺序出栈,打印输出,即得到与输入的十进制相对应的八进制。解决思路:将十进制数N和其他d进制之间进行转换时计算机实现计算的基本问题,解决方案较多,其中最简单的方法是除d取余法,例如,(1348)10=(2504)8。过程原创 2021-09-25 16:09:43 · 477 阅读 · 1 评论 -
回文判断问题
【问题描述】试写一个算法,判断依次读入的一个以@为结束的字母序列,是否为形如 “序列1&序列2” 模式的字符序列。其中 序列1 和 序列2 中都不含字符 “&”,且 序列2 是 序列1 的 逆序列。例如:“a+b&b+a” 是属该模式的字符序列,而“1+3&3-1”则不是。【测试数据】由学生自己确定。注意测试边界数据,例如序列1和序列2均为空串。代码:首先创建一个栈:详细如何建栈的过程可以参考博文:用C语言创建一个栈#include<std原创 2021-09-24 20:12:22 · 623 阅读 · 0 评论 -
用C语言创建一个栈
非常感谢我浪哥手把手教会我建栈下面的代码只是建立一个栈而已利用栈实现二进制与十进制的转化,请看这篇超详细的博文首先定义一个结构体叫做sqstack,这个结构体中的数据包含一个top指针,和一个base指针,还有这个结构体本身的大小,其实就是栈的定义typedef struct{ Elemtype *top; Elemtype *base; int stacksize; }sqstack;对栈进行初始化,给栈分配一个存储空间,在未存储数据时,栈顶指针与栈底指针重合int initsta原创 2021-05-08 15:49:31 · 7843 阅读 · 12 评论 -
快速排序法
#include<stdio.h>**加粗样式**#include<string.h>void quicksort(int *arr, int begin, int end){ if (begin > end) { return; } int i = begin; int j = end; int temp = arr[begin]; while (i < j) { while (i < j && arr[j] >原创 2021-04-27 22:06:01 · 119 阅读 · 2 评论 -
KMP算法代码及优化(详解)
有点长,请耐心看完在上一篇博文中了解了BF算法的代码,BF(Brute-Force)算法从它的英文简称都可以知道是靠蛮力的的匹配关键字的方法,其实就是将模式串与主串的第一个(按照书上的说法,也可以不一定是第一个)依次一个一个的往后面比较,注意,我说的是主串的每一个,也确实够蛮力的,我们来回顾一下:先声明一下:我们称主串为s,i 是它的指针;模式串为t,j是指针,其实就是他们的序列位数,因为数组的位数是从零开始的,所以我们的字符串的第1个我们称它为第0位。if(s[i] == t[j])原创 2021-04-27 00:00:15 · 798 阅读 · 6 评论 -
BF算法代码(超详细)
需要用到的知识:头文件<string.h>中包含strlen()函数计算字符串的长度,遇到\0时停止如hello#include<stdio.h>#include<string.h> //提供strlen()函数计算字符串的长度int bf(char *s, char *t){ int i = 0, j = 0; int len_s = strlen(s) - 1; int len_t = strlen(t) - 1; //strlen()函数计算长度原创 2021-04-24 17:04:35 · 5407 阅读 · 13 评论 -
数据类型和抽象数据类型
数据类型例如C语言中:提供 int,char,float,double等数据类型;数组,结构,共用体,枚举等构造数据类型;还有指针,空(viod)类型。抽象据类型另一些常用的数据结构,如栈,队列,数,图等,不能直接用数据类型来表示。抽象数据类型一般指由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象,数据对象上关系的集合以及数据对象的基本操作集合。抽象数据类型的定义格式如下:ADT 抽象数据类型名{ 数据对象:<数原创 2021-04-12 20:03:48 · 1522 阅读 · 0 评论 -
数据结构
逻辑结构的种类线性结构:有且仅有一个开始结点和一个终端节点,并且所有的结点都最多只有一个直接前驱和一个直接后继例如:线性表,栈,队列,串。非线性结构:一个结点可能有多个直接前驱和直接后继例如:树,图。存储结构的种类顺序储存结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置表示,C语言中用数组来实现顺序存储结构。链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示,C语言中用指针来实现来链式存储结构。...原创 2021-04-11 23:39:13 · 162 阅读 · 2 评论