数据结构C++
基于C++数据结构,包括顺序存储,链式存储等
ggj的球球
技术没有极限
展开
-
快速排序简易版
#include <stdio.h>#include <stdlib.h>void PrintArray(int *array,int len){ int j=0; for(j=0;j<len;j++) { printf("%d\t",array[j]); } printf("\n");}void QuickSort(int *array,int start,int end){ int temp=array[start]; int i=start.原创 2022-03-20 11:30:28 · 73 阅读 · 0 评论 -
冒泡排序实现
#include <string.h>#include <time.h>#include <stdio.h>#include <stdlib.h>#include <sys/timeb.h>#define MAX 10000//交换函数int i=0;int j=0;long t_start;long t_end;long alltime;void swap(int *a,int *b){ int temp=*a; *原创 2022-03-13 09:50:32 · 72 阅读 · 0 评论 -
二叉树的#号创建法
#号创建法即把所有叶子没有数据的都为#输出结果:代码实现#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct BInaryNode{ char ch; //数据域 struct BInaryNode * lChild; //左孩子节点 struct BInaryNode * rChild; //右孩.原创 2022-03-12 23:44:03 · 849 阅读 · 1 评论 -
二叉树的编程
效果代码实现:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>struct BindMoniker{ char ch; //数据域 struct BindMoniker * lChild; //左孩子节点 struct BindMoniker * rChild; //右孩子节点};//叶子片数int calculateLea原创 2022-03-09 00:20:37 · 85 阅读 · 0 评论 -
二叉树的递归遍历
递归相当于你用一把钥匙开门,开了一扇之后发现还可以开第二扇,发现可以一直开,直到前面有一扇打不开的们的时候,那么我就从最后一扇走回到第一扇。遍历是什么就是把描述的每个结点都走一遍,然后每个结点都不能重复。树的遍历原则一定是先左后右。二叉树的遍历分为三种:DLR,LDR,LRD其中D是根节点,L是左孩子结点,R是右孩子结点)原则:只要碰到树,就往下走举例:代码实现:#include <stdio.h>#include <stdlib.h>#include &l原创 2022-03-08 23:03:51 · 241 阅读 · 0 评论 -
树的特征和性质
树是面试官面试时非常愿意考察的问题二叉树是树中最常见的类型,二叉树可以缩小树的复杂程度特征:1.每个结点最多有俩个子树左右俩个树的结点的顺序不能颠倒性质:i代表树的深度1.第i层有2^(i-1)个结点2.整颗树最多有2^i-1个结点有这些节点的叫做满二叉树...原创 2022-03-08 22:54:43 · 313 阅读 · 0 评论 -
栈的应用_就近匹配机制
我们做的验证就是一队字符串,我们匹配对号的出现,如果()只出现了一次,那么我们将把它挑选出来。办法是遇到(就入栈,遇到)就出栈,如果只入栈,不出栈那么将返回错误。这种情况根本没有(所以栈中没有数据,所以进不去栈。实现效果#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>#include "seqStack.h"/*从第一个字符原创 2022-03-03 13:06:25 · 207 阅读 · 0 评论 -
队列的链式存储测试
效果展示测试代码#include <stdio.h>#include <stdlib.h>#include "linkStack.h"#include <conio.h>#include <string.h>typedef struct PERSON{ LinkNode *node; char name[64]; int age;}Person;void test01(){ //创建链表 LinkStack *list=Ini原创 2022-03-02 20:07:08 · 73 阅读 · 0 评论 -
队列的链式存储测试
效果展示测试代码#include <stdio.h>#include <stdlib.h>#include "linkStack.h"#include <conio.h>#include <string.h>typedef struct PERSON{ LinkNode *node; char name[64]; int age;}Person;void test01(){ //创建链表 LinkStack *list=Ini原创 2022-03-02 20:07:08 · 72 阅读 · 0 评论 -
队列的链式存储
#ifndef LINKSTACK_H#define LINKSTACK_H#include <stdio.h>#include <stdlib.h>#include <string.h>//栈的精髓就是在于用数组模拟栈//数组去模拟栈的顺序存储#define MAX_SIZE 1024#define LINKSTACK_TURE 1#define LINKSTACK_FLASE 0typedef struct LINKNODE{ struct L原创 2022-03-02 20:05:24 · 42 阅读 · 0 评论 -
队列的顺序存储测试
#include "SeqQueue.h"#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct PERSON{ char name[64]; int age;}Person;int main(void){ //初始化栈区 SeqQueue *stack=InitStack(); //创建数据 //创建数据 Person p1,p2,p3,p4,p5; .原创 2022-03-01 20:33:04 · 82 阅读 · 0 评论 -
队列的顺序存储
队列队列是先进先出用数组去模拟队列的内存空间俩端都可以作为队头#ifndef SEQQUEUE_H#define SEQQUEUE_H#include <stdio.h>#include <stdlib.h>#include <string.h>//栈的精髓就是在于用数组模拟栈//数组去模拟栈的顺序存储#define MAX_SIZE 1024#define SEQQUEUE_TURE 1#define SEQQUEUE_FLASE 0typ.原创 2022-03-01 20:28:23 · 65 阅读 · 0 评论 -
栈的链式存储测试
测试代码#include <stdio.h>#include <stdlib.h>#include "linkStack.h"#include <conio.h>#include <string.h>typedef struct PERSON{ LinkNode *node; char name[64]; int age;}Person;void test01(){ //创建链表 LinkStack *list=InitStac.原创 2022-02-28 15:01:36 · 103 阅读 · 0 评论 -
栈的链式存储
效果图:#ifndef LINKSTACK_H#define LINKSTACK_H#include <stdio.h>#include <stdlib.h>#include <string.h>//栈的精髓就是在于用数组模拟栈//数组去模拟栈的顺序存储#define MAX_SIZE 1024#define LINKSTACK_TURE 1#define LINKSTACK_FLASE 0typedef struct LINKNODE{ st原创 2022-02-28 15:00:24 · 51 阅读 · 0 评论 -
栈的顺序存储测试
#include "seqStack.h"#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct PERSON{ char name[64]; int age;}Person;int main(void){ //初始化栈区 SeqStack *stack=InitStack(); //创建数据 //创建数据 Person p1,p2,p3,p4,p5; s原创 2022-02-27 13:32:05 · 155 阅读 · 0 评论 -
栈的顺序存储
栈:先进后出不能遍历压栈,入栈你如果想查询栈中元素,那么你就要得到栈中有多少元素,还有要知道size才可以调用top方法,把栈中数据一个个谈出来。栈的顺序存储用一段连续的内存空间存储顺序存储以数组的右边为栈顶,因为这样数组就不用频繁移动了。#ifndef SEQSTACK_H#define SEQSTACK_H#include <stdio.h>#include <stdlib.h>#include <string.h>//栈的精髓就是在于用数原创 2022-02-27 13:29:13 · 159 阅读 · 0 评论 -
约瑟夫问题
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include "CircleLinkList.h"#define M 8#define N 3typedef struct MYNUM{ CircleLinkNode *node; int val;}MyNum;void MyPrint(CircleLinkNode *data){..原创 2022-02-26 16:49:56 · 214 阅读 · 0 评论 -
循环链表测试(缺少根据值删除结点)
测试代码#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include "CircleLinkList.h"typedef struct PERSON{ CircleLinkNode node; char name[64]; int age; int score;}Person;void Myprint(CircleLinkNode.原创 2022-02-26 15:25:45 · 183 阅读 · 0 评论 -
循环链表设计(缺少结点按照值删除)
代码实现形式首先我暂时没有做根据值删除,因为我的回调函数比较出现问题,之后在更新#include <stdlib.h>#include <stdio.h>//链表小节点typedef struct CIRCLELINKNODE{ struct CIRCLELINKNODE* next;}CircleLinkNode;//链表结点typedef struct CIRCLELINKLIST{ CircleLinkNode head; int size;}C.原创 2022-02-26 15:22:55 · 450 阅读 · 0 评论 -
企业链表测试
#include <stdio.h>#include <stdlib.h>#include "LinkList.h"#include <conio.h>#include <string.h>typedef struct PERSON{ LinkNode *node; char name[64]; int age;}Person;void MyPrint(LinkNode* data){ Person *p=(Person*)data.原创 2022-02-24 18:26:06 · 255 阅读 · 0 评论 -
顺序存储,链式存储,企业链表总结
等待中。。。。。。原创 2022-02-24 18:22:08 · 228 阅读 · 0 评论 -
企业链表测试
原创 2022-02-23 11:33:44 · 49 阅读 · 0 评论 -
企业链表设计
企业链表可以大幅度减少程序员对链表偏移指针的计算,大幅度减少代码量的书写上图表示test01的指针可以访问test02的a,b,但无法访问c,企业链表的设计精髓就在这里,不需要去偏移指针,可以直接调用企业链表的优点就是把每个模块的指针牵在一起。如果一定要是linux通用链表那么也可以找node*只不过多啦数据域的偏移如下代码#include <stdlib.h>#include <stdio.h>//链表小节点typedef struct LINKNODE{原创 2022-02-23 11:32:48 · 449 阅读 · 0 评论 -
&4单项链表(链式存储)测试
对&3代码进行测试`//自定义数据类型typedef struct PERSON{ //创建链表 char name[50]; int age; int score;}Person;void MyPrint(void *data){ Person *p=(Person *)data; printf("Name:%s;Age:%d,Score:%d\n",p->name,p->age,p->score);}void test01(){ //创建列表原创 2022-02-21 23:22:57 · 334 阅读 · 0 评论 -
&3单项列表(链式存储)
线性表(链式存储):顺序存储:用一块连续的内存空间链式存储:不连续的内存空间链表是一系列的结点组成,每个接点保存俩个域,指针域和数据域链式存储同时也作为了数据结构最核心的内容。```cpp```cpp#include <stdio.h>#include <stdlib.h>//链表结点typedef struct LINKNODE{ void *data;//数据域(指向任何类型数据void *) struct LINKNODE *next;//指针域}原创 2022-02-21 23:21:44 · 326 阅读 · 0 评论 -
&2动态数组(线性表的顺序存储)测试
之前写的多个函数需要在main函数中进行测试首先打开控制台时我们可以定义控制台的颜色通过system("%dF"),%d通过选择//2f绿色 //3f蓝色 //4f红色 //5f紫色 //6f橙色 //7f白色 system("color 2F");选择颜色后选则不让控制台输出press any key to continue(如何在DOS系统中不是立刻结束执行)在程序末尾加一个getch(); 注意加头文件conio.hgetch():所在头文件:conio.h函数用原创 2022-02-21 18:34:22 · 483 阅读 · 0 评论 -
&1动态数组(线性表的顺序存储)
typedef struct DYNAMUCARRAY{ int *pAddr;//链表位置 int size;//链表当前元素个数 int capacity;//容量,容器当前能存放的元素个数}Dynamuc_Array;//写一系列的相关的操作函数//初始化Dynamuc_Array *Init_Array();//插入void Push_Back_Array(Dynamuc_Array *arv,int value);//根据位置删除void RemoveBypos(Dynam原创 2022-02-17 19:19:24 · 280 阅读 · 0 评论