![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
黑暗守护者
做个俗人,贪财好色!
展开
-
KMP算法
#ifndef KMP_H_#define KMP_H_#include<iostream>/*** 寻找子串在主串中第一次出现的位置* 朴素模式匹配算法*/int GetIndex1(char* S, char* T){ int Slen = strlen(S); int Tlen = strlen(T); std::cout << Slen << "\t" << Tlen << std::endl; int i =原创 2021-04-10 16:31:45 · 65 阅读 · 0 评论 -
LeetCode——链表
两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例2:输入:l1 = [0], l2 = [0]输出:[0]示例3:输入:l1 = [9,9,9,9,9,9,转载 2021-04-10 14:50:01 · 113 阅读 · 0 评论 -
笔试(一)
实现数组翻转题目:有一个排列,最开始的顺序是{1,2,3,4,5,··········n},即升序排列。接着对这个排列进行k次操作,每次操作都选择一个区间[l,r]进行翻转。保证翻转的区间的起始点和终点都是非递减的,即记两次操作为i和j,若i<j,必有li<=lj,且rj<=rj。请问:该排列最后的顺序是什么?输入: 第一行:输入两个整数n和k,n代表排列长度,k代表操作次数。(1<=n,k<=105)接下来k行,每行两个整数l和r,代表被操作的区间。(1原创 2021-04-10 01:37:02 · 123 阅读 · 0 评论 -
二级指针实现二维数组(C++)
二位数组的指针实现方式#include<iostream>#include<cmath>/*** 二位数组:* 使用二级指针创建数组* 释放二级指针所占的空间*/template<class T>void make2dArray(T**& arr, int RowSize, int ColumnSize){ //创建行指针 arr = new T * [RowSize]; //为每一行分配内存空间 for (int i = 0; i原创 2021-04-07 21:33:12 · 895 阅读 · 0 评论 -
队列实现(C++类模板)
1.动态数组实现队列1.MyQueue.h#pragma once#include<iostream>/*** 实现顺序循环队列存储*/template<class ElementType>class LinearQueue{private: int size; //队列中的元素个数 int MaxSize; //队列最大长度 int front, rear; //队头,队尾 ElementType* data; //一维动态数组p原创 2021-04-06 13:33:52 · 501 阅读 · 0 评论 -
栈的实现(C++类模板)
顺序栈的实现1.MyStack.h#ifndef MYSTACK_H_#define MYSTACK_H_#include<iostream>template<class ElementType>class LinearStack{private: ElementType* data; int length; int MaxSiaze;public: inline ElementType& GetElement(int pos) { ret原创 2021-04-06 13:25:04 · 310 阅读 · 0 评论 -
顺序表(C++类模板)
1.动态数组顺序表实现(C++)1.Mylist.h头文件包含类模板以及方法声明#ifndef MYLIST_H_#define MYLIST_H_#include<iostream>#define InitialSize 10 //默认的最大长度template<class ElementType>class MyList{private: ElementType* data; int MaxSize; int length;pub原创 2021-04-06 13:12:25 · 426 阅读 · 0 评论