Data_Structure
文章平均质量分 83
OliverkingLi
耶耶
展开
-
数据结构之单链表实现
使用头文件定义两个类,IntSLNode是表中的节点,另一个是IntSLList用于访问链表IntSLList.h#ifndef INT_LINKED_LIST#define INT_LINKED_LISTclass IntSLNode {public: IntSLNode() { next = 0; } IntSLNode(int e1, IntSLNode*ptr原创 2017-05-13 12:34:38 · 342 阅读 · 0 评论 -
顺序栈的实现
定义顺序栈的存储结构,并且实现基本的操作。包括构造空的顺序栈,建立包含若干的元素的顺序栈,入栈,出栈,输出顺序栈,求出栈长度,判断是否为空,判断是否为满等。list.h#include#include#include#include#include#include// #include#include// #include// 函数状态的代码#define TRUE 1原创 2018-01-16 21:26:53 · 663 阅读 · 0 评论 -
链栈的实现
由于顺序栈的扩容很不方便,借助链表的性质去构建一个链栈。并且实现基本的操作。包括构造空的链表,建立包含若干的元素的链表,入栈,出栈,输出链表,求出链表长度,判断是否为空等。list.h#include#include#include#include#include#include// #include#include// #include// 函数状态的代码#def原创 2018-01-16 22:06:38 · 1991 阅读 · 0 评论 -
线性表的定义
#include"stdafx.h"#include #include #include #include // #include #define MAXSIZE 100// 定义线性表的结构体typedef struct LNode*List;struct LNode { // 定义数据域和指向像一个节点的指针 int Data; List*next;};// 获取链原创 2018-04-03 12:11:02 · 1149 阅读 · 3 评论 -
堆栈定义
#include"stdafx.h"#include #include #include #include // #include #define MAXSIZE 100/*// 定义堆栈的结构体typedef struct SNode*Stack;struct SNode {// 数据域int Data[MAXSIZE];// 栈顶指针int top;};// 入原创 2018-04-03 12:11:59 · 712 阅读 · 0 评论 -
队列定义
#include"stdafx.h"#include #include #include #include // #include #define MAXSIZE 100/*typedef struct QNode*Queen;struct QNode { int Data[MAXSIZE]; int front; int rear;};int isFull(Queen原创 2018-04-03 12:13:10 · 298 阅读 · 0 评论 -
最大公约数&最小公倍数(GCD,LCM)
// 最大公约数void get_GCD(){ int a, b; while (scanf_s("%d%d", &a, &b) != EOF) { /* 求解两个正整数的最大公约数: 假设为a,b;如果g是a,b的最大公约数,那么g也一定是b和(a mod b)的最大公约数 则可以迭代: a = b,b = a mod b把问题规模降下来...原创 2019-02-01 15:37:21 · 980 阅读 · 0 评论 -
素数求解
// 求某个正整数是否为素数void is_Prime(){ int s; while (scanf_s("%d", &s) != EOF) { if (s < 2) { printf("NO\n"); } else { int r = -1; // 这里先计算平方根,然后+1避免精度损失,同时for循环仅计算一次平方根 // 同时...原创 2019-02-01 15:41:52 · 395 阅读 · 0 评论 -
二叉排序树构建和前序,中序,后续遍历实现
好久没冒过泡。。。这次复习数据结构,搞个二叉排序树code:#include "stdafx.h"#include <stdio.h>#include <iostream>#include <vector>#include <string>#include <unordered_map>#include <..原创 2019-01-28 18:47:54 · 548 阅读 · 0 评论 -
根据二叉树前序序列和中序序列还原二叉树,并输出后序遍历序列
code:#include "stdafx.h"#include <stdio.h>#include <iostream>#include <vector>#include <string>#include <unordered_map>#include <stdexcept>#include&原创 2019-01-28 18:53:41 · 2793 阅读 · 2 评论 -
给定序列构造二叉排序树,判断是否为同一二叉排序树
#include "stdafx.h"#include <stdio.h>#include <string.h>#include <iostream>struct Node { Node*lchild; Node*rchild; int c;}Tree[110];int loc;Node*create(){ Tree[loc].lch...原创 2019-01-30 16:05:52 · 2412 阅读 · 0 评论 -
单链表的基本操作实现
一:实现基本单链表 这里想实现单链表的基本操作:1.构造空的单链表2.建立包含若干的数据元素的单链表3.求出表长4.获取第i个元素值5.数据元素的插入6.数据元素的删除7.输出顺序表等 这里先定义单链表存储结构List;通过自定义函数实现单链表基本操作;然后调试运行程序。list.h#inclu原创 2018-01-16 12:21:32 · 1261 阅读 · 0 评论 -
C++实现最长公共子序列LCS问题
LCLCS问题求解:#include#include#include#include#includeusing namespace std;void LCS(const char *str1, const char *str2, string &str){ int size_1 = (int)strlen(str1); int size_2 = (i原创 2018-01-24 10:16:07 · 570 阅读 · 0 评论 -
求得给定字符串的全排列
给定字符串S[o...n-1],求出所有的S的全排列:ABC---ABC ACB BCA BAC CAB CBA一:递归求法#include #include using namespace std;void print_str(const int*a, int size){ for(int i=0; i < size; i++){ std::cout<<a[i原创 2018-01-23 21:58:15 · 881 阅读 · 0 评论 -
插入排序算法实现
// c_dataStructure.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templatevoid InsertSort_C(T data[], int n) { for (int i = 1, j; i < n; i++) { T tmp = data[i]; for原创 2017-08-07 20:27:03 · 357 阅读 · 0 评论 -
选择排序实现
// c_dataStructure.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templatevoid SelectionSort_C(T data[], int n) { for (int i = 0, j, least; i < n - 1; i++) { for (j =原创 2017-08-07 20:40:38 · 322 阅读 · 0 评论 -
冒泡排序改进之梳排序实现
// c_dataStructure.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templatevoid combSort(T data[], int n) { int step = n, j, k; while ((step = int(step / 1.3)) > 1) {原创 2017-08-07 21:10:37 · 410 阅读 · 0 评论 -
希尔排序实现
// c_dataStructure.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templatevoid ShellSort(T data[], T arrSize) { register int i, j, hCnt, h; int increments[20], k; //原创 2017-08-09 11:26:34 · 332 阅读 · 0 评论 -
冒泡排序实现
冒泡排序算法每一轮都是通过相邻元素的比较得来,假设n个元素,k轮排序后,问题规模就会缩减至n-k.>其中冒泡排序算法每一轮排序后都会有一个元素最终确定位置,具有不变性的特点.// c_dataStructure.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;templatevoid原创 2017-09-28 17:47:12 · 432 阅读 · 0 评论 -
最大连续子数组
问题描述,给定一个数组A[0,1,...,n-1],求出A的连续数组,使得该子数组的和最大。 例如:数组A[1,-2,3,10,-4,7,2],则最大的子数组为[3,10,-4,7,2]解法:1.暴力法2.分治法3.动态规划法一:暴力发分析:直接求解A[i,...,j]的值,0代码分析:int maxSubArr原创 2017-11-18 10:50:29 · 1438 阅读 · 0 评论 -
线性表实现
一:实现基本线性表 这里想实现线性表的基本操作:1.构造空的顺序表2.建立包含若干的数据元素的顺序表3.求出表长4.获取第i个元素值5.数据元素的插入6.数据元素的删除7.输出顺序表等 这里先定义顺序表存储结构SqList;通过自定义函数实现顺序表基本操作;然后调试运行程序。list.h#include#include#include原创 2018-01-15 21:53:33 · 791 阅读 · 0 评论 -
实现字符串的循环移动
实现字符串的循环移动: 循环移动某一给出的字符串,然后把前面k个字符拿到后面去,例如:abcdefg。我把前面3个字符拿到后面去变成:defgabc。实现这一算法的思路借助于线性代数的转置,(AB)^T = B^TA^T。因此把abcdefg拆成abc和defg两个字串,先把abc转置cba,然后吧defg转置gfed,拼接起来cbagfed,在转置得defgabc,即为所求,代原创 2018-01-23 21:00:29 · 595 阅读 · 0 评论 -
统计所给的unsigned型的数的二进制下1的个数
借助异或和分治的思想:#includeint HaiMingWeight(unsigned int n){ n = (n & 0x55555555) + ((n & 0xaaaaaaaa) >> 1); n = (n & 0x33333333) + ((n & 0xcccccccc) >> 1); n = (n & 0x0f0f0f0f) + ((n & 0xf0f0f0f0) >>原创 2018-01-23 21:02:52 · 331 阅读 · 0 评论 -
素因数问题
求解出某个数的素因数的个数,包括重复的素因数// 2019.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>bool mark[100001];int prime[100001];int primeSize;// 素数刷选法选择出0-100000的素数void init(){ prim...原创 2019-02-12 18:32:17 · 1124 阅读 · 0 评论