C++
L义MY
这个作者很懒,什么都没有留下。。。。。。
展开
-
抽象类不能创建对象,但可以定义指向抽象类的指针,从而实现多态
如题原创 2020-10-09 08:59:46 · 1817 阅读 · 0 评论 -
C++ operator(),operator(int),计算机咋知道i++,++i调哪一个?
找来找去,只有大写的两个字:规定原创 2020-08-06 17:19:39 · 315 阅读 · 0 评论 -
简易通讯录管理系统C++
在VS2019运行成功://在main函数里调用封装好的函数#include<iostream>#include<string>#define MAXSIZE 5//假设通讯录为5个人,也可以改为1000人using namespace std;//设计联系人结构体struct Person{ //姓名 string m_Name; //性别:可以用int m_Sex,容易判断性别是否输错 string m_Sex; //年龄 int m_Age; /原创 2020-07-14 20:10:51 · 378 阅读 · 0 评论 -
寻找线索二叉树的前驱后继,以及遍历线索二叉树
寻找线索二叉树的前驱后继,以及遍历线索二叉树中序线索二叉树寻找前驱后继及遍历寻找中序序列的后继结点及正向遍历寻找中序遍历的前驱结点及逆向遍历先序线索二叉树寻找后继结点及前驱结点寻找先序序列的后继结点寻找先序序列的前驱结点后序线索二叉树寻找后继结点及前驱结点寻找后序序列的后继结点寻找后序序列的前驱结点中序线索二叉树寻找前驱后继及遍历定义线索二叉树:typedef struct ThreadNode{ int data; struct ThreadNode *lchild, *rchil原创 2020-07-07 18:11:45 · 1394 阅读 · 3 评论 -
二叉树的线索化
为什么要线索化二叉树?:传统的二叉树的链式存储,只能体现一种父子关系,不能直接得到结点在遍历中的前驱结点和后继结点,而且一般仅能从最上方往下找,很不方便,不能从任意结点开始遍历寻找前驱后继。前文中提过二叉树链式存储有n+1个空链域,所以可以充分利用这n+1个空指针构造出线索二叉树使得我们更方便的遍历二叉树。//不线索化找前驱typedef struct BTNode{ int data; struct BTNode *lchild,*rchild;}BTNode,*BTree;原创 2020-07-07 15:56:57 · 427 阅读 · 0 评论 -
二叉树的先序遍历、后序遍历、中序遍历、层次遍历(C++递归)
//链式存储实现二叉树typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//以打印操作为例void visit(BiTNode *p){ std::cout<<p->data;}//先序遍历:/*1.访问根节点2.先序遍历左子树3.先序遍历右子树*/void PreOrder(BiTree T){ if(T)原创 2020-07-05 15:57:11 · 560 阅读 · 0 评论 -
二叉树的顺序存储与链式存储(C++)
//二叉树顺序存储方式:静态数组。#define MAXSIZE 100struct TreeNode{ //ElemType value; int value; bool isEmpty;//表示结点是否为空};//定义树TreeNode t[MAXSIZE];//初始化void InitTreeNode(TreeNode T[]){ for(int i=0;i<MAXSIZE;i++)//TreeNode T[MAXSIZE];i<T.l.原创 2020-07-03 19:46:44 · 918 阅读 · 0 评论 -
串基本操作:求子串、比较操作、模式匹配:暴力遍历、KMP算法;及next、nextval数组求法
#include<iostream>#define MAXSIZE 255//舍弃ch[0],使位序=数组下标。使用变量length表示长度。//定义串:使用静态数组方法。typedef struct { char ch[MAXSIZE];//预定义最大串长尾255 int length;}SString;//求子串:用Sub返回串S的第pos个字符起长度为len的子串bool SubString(SString &Sub,SString S,int p原创 2020-07-02 14:46:06 · 1309 阅读 · 3 评论 -
24.两两交换链表中的节点C++哨兵节点迭代
题目解法:哨兵节点迭代在链表之前加上一个哨兵节点,这样对链表的头节点的操作就统一了起来,然后可以用双指针,当然用三个指针也可以,我第一次想的就是三个指针,但是觉得三个指针加上哨兵节点太多了,而且节点数是两个的时候第三个指针就是空的,就换了双指针。第一次以为只有偶数个节点,因为示例里只有偶数个,写了之后报错,因为可以有奇数个节点,然后看了返回值,在循环加个判断条件head->next!=NULL就可以了。/** * Definition for singly-linked list. *原创 2020-06-28 20:05:22 · 340 阅读 · 0 评论 -
快慢指针找链表中点
一直遍历了找中点,遇见了几次快慢指针找中点但是也没记住,记性不好就写着。ListNode *fast,*slow;fast=slow=head;while(fast&&fast->next){ slow=slow->next; fast=fast->next->next;}//slow最终所指即为中点...原创 2020-06-27 20:05:53 · 390 阅读 · 0 评论 -
203.移除链表元素C++
题目解法一:暴力遍历/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeElements(ListNode* head, int val) {原创 2020-06-20 18:05:25 · 288 阅读 · 0 评论 -
141.环形链表(C++)哈希表以及有趣的快慢指针
题目解法一:哈希表联想到上篇文章相交链表的解法,可以用哈希表存放指针访问过的节点,当再次访问已经访问过的节点时表示是环形链表,返回true退出。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publ原创 2020-06-20 16:55:14 · 222 阅读 · 0 评论 -
C++单链表操作(增删查改)
#include<iostream>using namespace std;//单链表typedef struct LNode{ int data;//不加*号 struct LNode *next;//不是int *next,而是定义一个LNode*类型的指针域;}LNode,*LinkList;//头插法LinkList List_HeadInsert(LinkList &L){ LNode *s; int x; L=(Li原创 2020-06-18 20:20:06 · 658 阅读 · 0 评论 -
160.相交链表(浪漫双指针C++)
题目解法一 浪漫双指针(错的人迟早会走散,而对的人迟早会相逢)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *getIntersectionNode(List原创 2020-06-18 20:02:18 · 198 阅读 · 1 评论 -
21. 合并两个有序链表C++
迭代:新建一个头结点prehead。pre指针指向头节点prehead,然后将l1、l2中小的数加在pre指针后,知道l1、l2中有一个为空。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), nex.原创 2020-06-16 11:11:21 · 177 阅读 · 0 评论 -
Windows环境C++ socket编程(附源码)
基础函数介绍:https://www.jianshu.com/p/3b233facd6bbC++ socket编程:IDE:VS2019;我建立两个工程,一个作为服务器端,一个作为客户端,debug之后,运行连接。先搞清上述基本函数之后再编写十分简单。源码文件在最后服务器端:// server.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//```cpp#include<stdio.h>#include<string.h>#in原创 2020-05-31 21:50:09 · 745 阅读 · 0 评论 -
41.缺失的第一个正数C++
取巧了,先用了sort库函数排了个序。原创 2020-05-25 13:13:09 · 143 阅读 · 0 评论 -
面试题02.02.返回倒数第k个结点
典型的快慢指针问题。快指针先走k步,然后快指针和慢指针一起往后移动,最后的慢指针所指就是所求。原创 2020-05-25 13:09:06 · 146 阅读 · 0 评论 -
14.最长公共前缀
解法一:暴力遍历可以直接S+=len[ j ];但是不能S[ j ]=len[ j ],这样有五个存储空间;解法二:水平扫描法可以用while循环原创 2020-05-25 13:04:17 · 140 阅读 · 0 评论 -
13.罗马数字转整数
原本想着数组存放7个罗马数字,但是又想到I=1不可能用a[1000]=M来表示,这样数组就太大了,转而想哈希表,HasMap、unordered_map,无序map。1.注意i++、++i、i+1、1+i区别;2.insert插入类型与map定义类型对应,因而使用单引号。3.unordered_map是基于Hash的结构,查询速度可以认为是O(1);4.map是基于红黑树的结构,查询速度为O(logn)。但是unordered_map不一定比map快。...原创 2020-05-25 12:58:12 · 128 阅读 · 0 评论 -
09回文数
题目如下:解法一:转换为string字符串将x转换为String字符串,之后使用双指针,一边遍历一边比较;(C++ int转化为String为:string to_string (x)),后面直接比较left++和right–是我没想到的。解法二:使用栈,压入一半数字,然后比较使用栈去比较,但是我写的稍微繁杂了点,不如题解用y<x这个特征来得简单(int y=0截图时不小心被删了)解法三:将x全部倒置...原创 2020-05-25 12:27:08 · 147 阅读 · 0 评论 -
C++归并排序小结
归并排序小结#include<iostream>using namespace std;//打印函数void printArray(int A[],int n){ for (int i = 0; i < n;++i) cout << A[i] << endl;}void MERGE(int A[],int p,int...原创 2019-10-26 15:29:06 · 195 阅读 · 0 评论