数据结构
用C语言写常见的数据结构,实力有限,若有错误,请多指教
M.JH
万千利器莫过于你的信念
展开
-
数据结构与算法中常用的排序算法整理
目录.冒泡排序.选择排序.插入排序.希尔排序.快速排序.归并排序-递归.归并排序-循环.堆排序.桶排序.冒泡排序#include<iostream>using namespace std;//输出数组void PrintArray(int a[],int length){ for (int i = 0; i < length; i++) { cout << a[i] << ' '; } cout << endl;}//冒泡原创 2021-10-10 21:06:36 · 165 阅读 · 1 评论 -
C语言树的简单实现和相关算法
#include<stdio.h>#include<stdlib.h>#include<time.h>#define maxSize 10typedef struct BTNode{ char data; struct BTNode* lchild; struct BTNode* rchild;}BTNode;void init(BTNode**T){ (*T) = (BTNode*)malloc(sizeof(BTNode)); (*T)-&原创 2021-05-20 17:00:21 · 231 阅读 · 0 评论 -
关于将数组满足条件表达式的元素移动的算法
设计一个算法将数组中非零元素移动到数组前端#include<stdio.h>#include<stdlib.h>void Msort(int a[],int m){ int x = -1,y=0; for (y; y < m; ++y) { if (a[y] != 0) { ++x; if (x != y) { int temp = a[y]; a[y] = a[x]; a[x] = temp; } }原创 2021-05-10 20:38:29 · 79 阅读 · 0 评论 -
队列的顺序存储结构和链式存储结构的实现
循环队列#include<stdio.h>#include<stdlib.h>//循环队#define maxsize 10typedef struct Squeue{ int data[maxsize]; int front; int rear;}Squeue;//初始化循环队列void init(Squeue* qu){ qu->front = 0; qu->rear = 0;}//判断队列是否为空int isQueueEmp原创 2021-05-09 22:52:44 · 231 阅读 · 0 评论 -
栈的顺序存储结构和链式存储结构实现
顺序栈#include<stdio.h>#include<stdlib.h>//顺序栈的定义#define maxSize 50typedef struct{ int data[maxSize]; int top;}SqStack;//初始化顺序栈void initStack(SqStack *st){ st->top = -1;}//判断栈空int isEmpty(SqStack* st){ if ((st->top) ==原创 2021-05-07 22:53:09 · 133 阅读 · 0 评论 -
C语言KMP算法的实现
原理参考该视频#include<stdio.h>#include<stdlib.h>//复现一下KMP算法的普通版本和改进版本,next[]数组-普通版本 nextval[]数组-改进版本int MyKmp(char str[],char substr[],int next[]);void getnext(char substr[],int next[]);void getnextval(char substr[], int nextval[]);int main原创 2021-05-07 18:24:28 · 125 阅读 · 0 评论 -
数据结构习题总结
1.顺序表用A[]表示,总长m+n,前m个元素有序递增,后n个元素有序递增设计一个算法使A[]整体有序递增,并分析时间和空间复杂度//思路,从下标 A(m,m+n-1) 中依次处理,与该元素前所有元素进行比较,比较途中完成移动,找到合适位置进行插入void insertElem(int A[], int m, int n){ int i = m; int temp; for (i; i < m + n; ++i) //从下标 A(m, m + n - 1) 中依次处理 { t原创 2021-04-26 16:37:37 · 241 阅读 · 0 评论 -
C/C++语言实现数据结构之单链表(不带头结点)
单链表相关知识#include<stdio.h>#include<stdlib.h>typedef int ElemType; //让链表存储数据为int,如果想泛化能力更强,可以采用C++的模板技术typedef struct Node{ ElemType data; Node* next;}*PNode;//初始化链表bool InitPNode(PNode& L){ L = (Node*)malloc(sizeof(Node)); if原创 2021-04-20 22:47:01 · 326 阅读 · 0 评论 -
C/C++语言实现数据结构之单链表(带头结点)
单链表相关知识用C语言简单实现#include<stdio.h>#include<stdlib.h>typedef int ElemType; //让链表存储数据为int,如果想泛化能力更强,可以采用C++的模板技术typedef struct Node{ ElemType data; Node* next;}*PNode;//初始化链表bool InitPNode(PNode& L){ L = (Node*)malloc(sizeof(Nod原创 2021-04-20 19:18:59 · 312 阅读 · 0 评论 -
C语言实现数据结构之线性表
#include<stdio.h>#include<stdlib.h>//数据结构之线性表//特点//优点:无须为表示表中元素之间的逻辑关系而增加额外的存储空间,可以快速地存储表中任何位置的元素//缺点:插入和删除操作需要移动大量元素 当线性表长度变化较大时,难以确定存储空间的容量 会造成存储空间的”碎片”//线性表存储结构#define MaxSize 20 //最大存储空间 下标0-19typedef int ElemType; //存储的类型,这里以i原创 2021-04-05 21:50:17 · 646 阅读 · 0 评论