![](https://img-blog.csdnimg.cn/20201010193552655.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++程序设计
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。
Atom_QQ2022313691
你给的美好的昨天,回忆的夏天,我们曾一起追逐梦想的那些年
展开
-
数据结构(C语言)图的定义
图的定义和术语 图 :G=(V,E)V:顶点(数据元素)的有穷非空集合;E:边的有穷集合。 完全图 :任意两个点都有一条边相连。 稀疏图 :有很少边或弧的图(e<nlogn) 稠密图 :有较多边或弧的图。 网 :边/弧带权的图。 邻接 :有边/弧相连的两个顶点之间的关系。存在(vi,vj),则称vi和vj互为邻接点;存在<vi,vj>,则称vi邻接到vj,vj邻接于vi 关联(依附) :边/弧与顶点之间的关系,存在(vi,vj)或者<vi,vj>,则称该边/弧原创 2020-07-14 20:02:20 · 602 阅读 · 0 评论 -
数据结构(C语言)哈夫曼树
哈夫曼树(最优树)带权路径长度(WPL)最短的树 路径 :从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度 :两结点间路径上的分支数。(a)从A到B,C,D,E,F,G,H,I路径长度分别为1,1,2,2,3,3,4,4(a)从A到B,C,D,E,F,G,H,I路径长度分别为1,1,2,2,3,3,4,4(a)从A到B,C,D,E,F,G,H,I路径长度分别为1,1,2,2,3,3,4,4(b)从A到B,C,D,E,F,G,H,I路径长度分别为1,1,2,2,2原创 2020-07-09 11:19:45 · 1101 阅读 · 0 评论 -
数据结构(C语言)树与森林的遍历
树的遍历先跟(次序)遍历若树不空,则先访问根节点,然后依次先跟遍历各棵子树。后跟(次序)遍历:若树不空,则先依次后跟遍历各棵子树,然后访问根节点。按层次遍历:若树不空,则自上而下自左至右访问树中每个结点。遍历结果:先跟遍历:ABCDEABCDEABCDE后跟遍历:BDCEABDCEABDCEA层次遍历:ABCEDABCEDABCED森林的遍历将森林看作由三部分构成:森林中第一棵树的根结点;森林中第一棵树的子树森林;森林中其它树构成的森林。先序遍历若森林不空,则原创 2020-07-08 21:27:56 · 969 阅读 · 0 评论 -
数据结构(C语言)树的存储结构
树的存储结构1、双亲表示法 实现 :定义结构数组,存放树的结点,每个结点包含两个域: 数据域 :存放结点本身信息 双亲域 :指示本结点的双亲结点在数组中的位置存储结构数组下标dataparent0R-11A02B03C04D15E16F37H68H69K6特点:找双亲容易,找孩子难代码实现typedef struct PTNode{ TElemType data原创 2020-07-08 21:01:24 · 1905 阅读 · 0 评论 -
数据结构(C语言) 队列的表示和实现
队列队列的存储结构//----循环队列----typedef struct { QElemType* base;//初始化的动态分配存储空间 int front;//头指针,若队列不空,指向队列头元素 int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;基本操作的函数原型说明//----基本操作的函数原型说明----Status InitQueue(SqQueue& Q);//构造一个空队列Qbool QueueEmpty(SqQueue原创 2020-07-08 08:31:35 · 436 阅读 · 1 评论 -
数据结构(C语言)关于二叉树的非递归遍历
非递归算法中序遍历基本思想:建立一个栈根结点进栈,遍历左子树根结点出栈,输出根结点,遍历右子树原创 2020-07-07 18:38:35 · 502 阅读 · 0 评论 -
数据结构(C语言)关于二叉树的递归遍历
二叉树的遍历 先序遍历 :−+A×BC÷DE-+A\times BC \div DE−+A×BC÷DE 中序遍历 :A+B×C−D÷EA+B\times C-D\div EA+B×C−D÷E 后序遍历 :ABC×+DE÷−ABC\times +DE\div-ABC×+DE÷−emmmm如果你看不懂的话,你可以先这样,首先将这个二叉树的左边补全!!!一定是左边,因为根据遍历顺序而来的!!!相信我然后跟我的GIF图走一遍先序遍历中序遍历后序遍历找找规律,因为二叉树是一个嵌套的结构(比如原创 2020-07-07 00:17:32 · 441 阅读 · 0 评论 -
数据结构(C语言)二叉树的表示和实现
二叉树二叉树的顺序存储按满二叉树的结点层次编号,依次存放二叉树中的数据元素。若有空节点则不能连续存储,空出位置!二叉树顺序存储缺点最坏情况:右单支树,深度为k的且只有k个结点的单支树需要长度为2k-1的一维数组。特点:结点间蕴含在其存储位置中浪费空间,适合存满二叉树和完全二叉树。二叉树的链式存储二叉链表typedef struct BiNode { TElemType data; struct BiNode* lchild, * rchild;//左右孩子指针}BiNode,原创 2020-07-06 21:44:14 · 1061 阅读 · 0 评论 -
数据结构(C语言)树与二叉树基本术语及性质
树树是一种数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。树的基本术语结点:数据元素以及指向子树的分支根节点:非空树中无前驱结点的结点结点的度:结点拥有的子树数树的度:树内各结点的度的最大值叶子结点(终端节点):度原创 2020-07-06 17:27:17 · 256 阅读 · 0 评论 -
数据结构(C语言)串的快速模式匹配KMP算法
KMP算法KMP算法是D.E.Knuth与V.R.Pratt和J.H.Morris同时发现的,每一趟匹配过程中出现字符比较不等时候,不需要回溯i指针,而是利用已经得到的“部分匹配的结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较。我们先来看几个例子第一个例子主串S为:" ACABAABAABCACAABC"子串T为:" ABAABCAC"第一次比较:将子串T放在第一位与主串比较,发现子串第二位与主串第二位不等。第二次比较:将子串放T放在上一次不相等的位置,再次进行比较,发现子串第一位就原创 2020-07-05 19:43:03 · 825 阅读 · 1 评论 -
数据结构(C语言)串的模式匹配BF算法
BF算法BF(Brute Force)算法又称暴力算法,是一种普通的模式匹配算法,其思想是:从主串第一个字符开始,取子串长度个字符,这些字符分别与子串进行比较,若某位字符不相等,则在主串起始字符向后推移一格与子串再进行比较,直至在主串遍历出与子串相等的字符串。...原创 2020-07-04 00:22:41 · 1866 阅读 · 0 评论 -
数据结构(C语言) 循环队列的表示和实现
循环队列的存储结构//----循环队列----typedef struct { QElemType* base;//初始化的动态分配存储空间 int front;//头指针,若队列不空,指向队列头元素 int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;基本操作的函数原型说明Status InitQueue(SqQueue& Q);//构造一个空队列Qint QueueLength(SqQueue Q);//返回Q的元素个数,即队列的长度S原创 2020-07-03 20:53:32 · 399 阅读 · 0 评论 -
数据结构(C语言) 队列的链式表示和实现
链队列的表示(a)空队列(b)元素x入队列(c)元素y入队列(d)元素x出队列预定义常量和类别见预定义常量和类型队列的链式存储表示//----单链队列----队列的链式存储结构typedef struct QNode { QElemType data; struct QNode* next;}QNode, * QueuePtr;typedef struct { QueuePtr front;//队头指针 QueuePtr rear;//队尾指针}LinkQueue;基本原创 2020-07-03 19:56:31 · 2161 阅读 · 1 评论 -
数据结构(C语言) 链栈的表示和实现
链栈的表示:预定义常量和类别见预定义常量和类型栈的链式存储表示typedef struct StackNode{ SElemType data; struct StackNode* next;}StackNode, * LinkStack;基本操作的函数原型说明//----基本操作的函数原型说明----Status InitStack(LinkStack& S);//构造一个空栈SStatus StackEmpty(LinkStack S);//若栈为空,返回TRUE原创 2020-07-03 10:09:22 · 582 阅读 · 1 评论 -
数据结构(C语言) 顺序栈的表示和实现
预定义常量和类别见预定义常量和类型栈的书序存储表示typedef struct { SElemType* base; //在栈构造之前和销毁之后,base的值为NULL SElemType* top; //栈顶指针 int stacksize; //当前已分配的存储空间,以元素为单位}SqStack;基本操作的函数原型说明//----基本操作的函数原型说明----Status InitStack(SqStack& S);//构造一个空栈SStatus StackEmpty(原创 2020-07-02 22:30:58 · 1085 阅读 · 0 评论 -
数据结构(C语言) 线性表的链式表示和实现
预定义常量和类别见预定义常量和类型存储结构//----线性表的单链表存储结构----typedef struct LNode { ElemType data; struct LNode* next;}LNode,*LinkList;基本操作的函数原型说明void CreateList_L_head(LinkList& L, int n);//操作结果:逆位序输入n个元素的值,建立带头结点的单链线性表L。void CreateList_L_tail(LinkList&原创 2020-06-26 19:18:08 · 1001 阅读 · 0 评论 -
数据结构(C语言) 线性表的顺序表示和实现
预定义常量和类别见预定义常量和类型#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量#define LISTINCREMENT 10 //线性表存储空间的分配增量采用动态分配的顺序存储结构typedef struct { ElemType* elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)}SqList;基本操作的函数原型说明//---原创 2020-06-24 13:55:34 · 576 阅读 · 1 评论 -
数据结构(C语言) 预定义常量和类别
#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2//Status是函数的类型,其值是函数结果状态代码typedef int Status;原创 2020-06-23 23:14:05 · 948 阅读 · 2 评论 -
数据结构(C语言) 抽象数据类型Triplet的表示和实现
预定义常量和类别见预定义常量和类型存储结构typedef ElemType* Triplet; //由InitTriplet分配3个元素存储空间基本操作的函数原型说明//----基本操作的函数原型说明----Status InitTriplet(Triplet& T, ElemType v1, ElemType v2, ElemType v3);//操作结果:构造了三元组T,元素e1,e2和e3分别被赋以参数v1,v2和v3的值。Status DestroyTriplet(Trip原创 2020-06-23 23:17:14 · 3317 阅读 · 7 评论 -
C/C++ 汉诺塔问题描述与实现
汉诺塔问题汉诺塔(tower of hanoil)问题是源于印度一个古老传说。是递归应用中非常经典的一种表现。问题大致描述如下假设有A、B、C三个木桩和n个大小均不相同的盘子,从小到大编号依次为1、2、3 … n,编号越大直径越大。起初,这些盘子均被套在木桩A上,现在希望将A木桩上的盘子借助B木桩当桥梁,以最少次数全部移到C木桩上。在移动时还需遵循以下规则:每次只能移动一个盘子,而且只能...原创 2020-06-21 22:27:02 · 548 阅读 · 0 评论 -
C语言任意数是否为质数
质数与合数在定义上一般都为非负数其中0,1既不是质数也不是合数#include<stdio.h>int isprime(int n);int main(){ for (int i = 0; i <= 10000; i++) { if (isprime(i) == 1) printf("%d ", i); } return 0;}int isprime(int n)//合数返回0 质数返回1{ if (n == 1 || n == 0) return原创 2020-06-07 18:43:10 · 175 阅读 · 0 评论 -
C/C++ 关于scanf()的代码调试
在做C练习实例的时候,我发现VS2019使用scanf()这个函数时会报错C4996scanf返回值被忽略是因为没有使用scanf的返回值可以有以下两种解决方案1、定义一个临时变量接受scanf函数的返回值int ret = scanf("%d",m)2、强制忽略返回值(void)scanf("%d",m)C6031在高版本的 Visual Studio 编译器中,scanf ...原创 2020-02-13 14:40:00 · 931 阅读 · 0 评论 -
C/C++ C语言整理与归纳
C语言主要特点C语言是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。...原创 2020-01-31 20:49:30 · 566 阅读 · 0 评论