自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 单链表的应用

//1、使用结构体创建一个结点,结点内容包括一个指向下一个结点的指针和一个char类型的数据//2、使用一个字符数组创建单链表//3、从头遍历单链表,设置一个计数器count,count代表当前元素的下标// 1)、当前元素不是要查找的字符时,指针指向下一个结点,并且计数器count加一// 2)、如果当前元素是要查找的字符,则返回计数器count// 3)、如果单链表...

2018-09-29 13:58:01 680

原创 顺序表的应用

typedef struct Student{ int num; //学号 char name[10]; //姓名 char classnum[5]; //班级}Student;int main(){ Student array[10] = { { 1, "zhanngsan", "301" }, { 2, "zhanngsan", "302" }, ...

2018-09-29 13:56:12 737

原创 约瑟夫环的应用

//1、使用结构体创建一个结点,结点内容包括一个指向下一个结点的指针和一个int类型的数据//2、使用一个字符数组创建单链表//3、将单链表构造成循环单链表,使用一个指针从头遍历单链表,直到这个指针指向最后一个结点,将这个结点的指针域指向头结点//4、实现约瑟夫环// 1)、从当前结点的下一个结点报数,直到找到报数是m的结点,将当前结点的值交给m,使用替换法输出并删除当前结点// ...

2018-09-29 13:53:19 1408

原创 智能指针的实现

#pragma once#include<iostream>using namespace std;//原理:资源的转移 解决的问题:释放指针//缺陷:如果一个指针通过拷贝构造和赋值运算符重载将管理的空间交给其他指针,则原指针是没有办法访问这块空间了#if 0template<class T>class AutoPtr{public: AutoP...

2018-09-26 15:26:42 172

原创 删除链表中重复的结点

class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { ListNode* first = new ListNode(-1); first->next = pHead; ListNode* slow = first; ...

2018-09-12 09:25:51 154

原创 C++实现排序算法

#pragma once#include<iostream>using namespace std;//插入排序:时间复杂度:O(lg(N^2)) 空间复杂度:O(1)//思路:将第i个元素插入到i-1个已排好序的数组中void InsertSort(int array[], int size){ int i = 0; int key = 0;//表示...

2018-09-11 17:18:55 452

原创 C++实现迭代器版本的红黑树

#pragma once#include<iostream>using namespace std;enum COLOR{BLACK,RED};template<class K,class V>struct RBTreeNode{ RBTreeNode<K, V>* _left; RBTreeNode<K, V>* _...

2018-08-30 21:15:15 275

原创 C++实现红黑树

#pragma once#include<iostream>using namespace std;enum COLOR{BLACK,RED};template<class K,class V>struct RBTreeNode{ RBTreeNode<K, V>* _left; RBTreeNode<K, V>* _...

2018-08-30 21:13:07 564

原创 C++实现AVL树的基本操作

AVLTree.hpp#pragma once#include<iostream>using namespace std;#include<stdlib.h>template<class K,class V>struct AVLTreeNode{ AVLTreeNode<K, V>* _left; AVLTreeNo...

2018-08-29 00:06:37 603

原创 C++实现堆的基本操作

#pragma once#include<iostream>using namespace std;#include<vector>//小堆template<class T>class Heap{public: Heap() {} Heap(const T* array, int size) { ...

2018-08-28 10:35:48 725

原创 C++实现二叉树的基本操作

BinTree.h文件#pragma once#pragma once#include<iostream>using namespace std;#include<string.h>#include<queue>#include<stack>template<class T>struct BinTreeNode{...

2018-08-26 15:14:41 612

原创 剑指offer面试题 青蛙跳台阶

题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。class Solution {public: int jumpFloor(int number){ unsigned int i = 0; long long a = 1; long long b = ...

2018-08-23 22:00:09 365

原创 剑指offer面试题 斐波那契额数

class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { stack<int> arr; vector<int> result; while(head!=nullptr) { ...

2018-08-23 21:21:30 182

原创 剑指offer面试题 从尾到头打印链表

class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { stack<int> arr; vector<int> result; while(head!=nullptr) { ...

2018-08-23 21:19:42 147

原创 剑指offer面试题 空格替换

class Solution {public: void replaceSpace(char *str,int length) { if(str==nullptr&&length<=0) return; char* cur = str; int oldlen = 0; int nu...

2018-08-23 21:18:37 173

原创 剑指offer面试题--二维数组的查找

代码实现:class Solution {public: bool Find(int target, vector<vector<int> > array) { int row = array.size(); int col = array.at(0).size(); if(row>0&&c...

2018-08-23 21:17:44 121

原创 模板实现通用的冒泡排序

template<class T>class Less{public: bool operator()(const T& left, const T& right) { return left < right; }};template<class T>class Greater{public:...

2018-08-11 11:09:20 531

原创 C++模板实现队列的基本操作

方法一:模板实现队列#pragma once#include<iostream>using namespace std;#include"List.h"template<class T,class Container = List<T> >class Queue{public: Queue() {} void P...

2018-08-10 09:51:33 718

原创 C++模板实现栈的基本操作

第一种是模板实现:#pragma once#include<iostream>using namespace std;#include"Vector.h"template<class T, class Container = Vector<T>>class Stack{public: Stack() {} void ...

2018-08-10 09:46:31 893

原创 模板实现带头结点的双向循环链表

#pragma once#include<iostream>using namespace std;template<class T>struct ListNode{ //双向链表 ListNode(const T& data = T()) :_next(NULL) , _prev(NULL) ...

2018-08-09 22:16:06 347

原创 模板实现顺序表Vector

主要功能: 1、初始化顺序表 2、顺序表的头插 3、顺序表的尾插 4、顺序表的头删 5、顺序表的尾删 6、顺序表的任意点插入 7、顺序表的查找删除 8、顺序表的排序 9、清空顺序表 10、打印顺序表代码实现:#pragma once #include<iostream>using namespace std;#include&lt...

2018-08-09 10:46:01 278

原创 C++实现顺序表的基本操作

顺序表的主要功能有: 1、初始化顺序表 2、顺序表的头插 3、顺序表的尾插 4、顺序表的头删 5、顺序表的尾删 6、顺序表的任意点插入 7、顺序表的查找删除 8、顺序表的排序 9、清空顺序表 10、打印顺序表代码实现:typedef int DataType;#define MAX 5class SeqList{public: Se...

2018-08-03 17:53:49 5793 2

原创 C++实现String类的深浅拷贝

浅拷贝:也称位拷贝,编译器只是直接将指针的值拷贝过来,当多个对象共用同一块内存,当一 个对象将这块内存释放掉之后,另一些对象不知道该块空间已经还给了系统,以为还有效,所以 在对这段内存进行操作的时候,发生了访问违规。 代码实现浅拷贝:引用计数—-普通版/*给引用计数也创建一个内存空间,并且和共享内存一样,让引用计数也共享*/class String{public: ...

2018-08-03 14:43:32 324

原创 使用定位new操作符实现new、delete、new[]、delete[]操作符

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<assert.h>using namespace std;class Test{public: Test(int data = 0) :_data(data) { cout << "...

2018-08-02 15:43:13 339

原创 C++实现复数类的运算符重载

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;#include<math.h>class Complex{public: Complex(const double dReal, const double dImage) :_dReal(dRe...

2018-08-01 14:38:45 934

原创 从尾到头打印单链表

问题描述: 从尾到头打印单链表 代码实现:void PrintTialToHead(pSListNode pHead){ pSListNode end = NULL; while (pHead != end) { pSListNode cur = pHead; while (cur->_next!= end) ...

2018-07-24 09:44:11 458

原创 在无头单链表的一个非头节点前插入一个节点(不能遍历链表)

问题描述: 在无头单链表的一个非头节点前插入一个节点(不能遍历链表)代码实现:typedef int DataType;typedef struct SListNode{ struct SListNode* _next; DataType _data;}SListNode,*pSListNode;pSListNode BuySListNode(DataType ...

2018-07-15 18:02:05 241

原创 单链表实现约瑟夫环(JosephCircle)

单链表实现约瑟夫环(JosephCircle)问题描述: 有n个人围成一个环,然后给从某个人开始顺时针从1开始报数,每报到m时,将此人出环杀死(当然不杀死也可以啊),然后从下一个人继续从1报数,直到最后只剩下一个人,求这个唯一剩下的存活的人是谁? 代码实现:typedef int DataType;typedef struct SListNode{ struct SLis...

2018-07-15 17:59:38 1191

原创 逆置/反转单链表

逆置/反转单链表//方法一pSListNode ReverseList(pSListNode pHead){ pSListNode n1 = pHead; pSListNode n2 = n1->_next; pSListNode n3 = n2->_next; if (pHead ==NULL || (pHead)->_next ==...

2018-07-15 17:56:18 242

原创 单链表的冒泡排序

实现思路: 先遍历一遍单链表,将最大的数放到链表的最后,第二次遍历链表时,将N-1个数里最大的放在N-1的位置,依次循环遍历,直到只剩下两个结点; 具体代码实现如下:typedef int DataType;typedef struct SListNode{ struct SListNode* _next; DataType _data;}SListNode,*pSLi...

2018-07-15 14:27:16 477

原创 合并两个有序链表,合并后依然有序

问题描述: 合并两个有序链表,合并后依然有序 实现思路: 先比较两个有序链表的头结点,将值最小的头结点作为新链表的头结点,设置两个新的指针,分别遍历两个链表,将值较小的结点尾插到新的链表中; 具体代码实现如下:typedef int DataType;typedef struct SListNode{ struct SListNode* _next; DataTyp...

2018-07-15 14:22:47 546

原创 查找单链表的中间节点,要求只能遍历一次链表

问题描述: 查找单链表的中间节点,要求只能遍历一次链表 实现思路: 先将链表遍历一次,统计链表节点的个数,然后设置两个指向头结点的指针,让第一个先走链表个数的一半,另一个指针同时开始走,当第一个指针走到链表的结尾时,另一个链表指向的结点就是链表的中介结点; 具体代码实现如下:typedef int DataType;typedef struct SListNode{ str...

2018-07-15 14:17:35 1703

原创 查找单链表的倒数第k个节点,要求只能遍历一次链表

问题描述: 查找单链表的倒数第k个节点,要求只能遍历一次链表 实现思路: 设置两个指向头结点的指针,让其中一个指针先走K步,然后让另一个指针同时一起走,找到倒数第K个结点; 具体代码实现:pSListNode FindKNode(pSListNode pHead,int k){ pSListNode cur = pHead; pSListNode tmp...

2018-07-15 14:11:28 828

原创 删除链表的倒数第K个结点

问题描述: 删除链表的倒数第K个结点 实现思路 设置两个指向头结点的指针,让其中一个指针先走K步,然后让另一个指针同时一起走,找到倒数第K个结点,将第K个结点的值与倒数第K个节点的下一个节点的值相互替换,删除倒数第K个结点的下一个结点; 代码实现:void DeleteKNode(pSListNode* pHead, int k){ pSListNode cur = *...

2018-07-15 14:09:15 1169

原创 判断单链表是否带环?若带环,求环的长度?求环的入口点

问题描述:判断单链表是否带环?若带环,求环的长度?求环的入口点?并计算每个算法的时间复 杂度&空间复杂度。 1、判断单链表是否带环: 实现思路:设置两个快慢指针分别指向链表的头节点,快指针一次走两步,慢指针一次走一步,如果两个相遇了,则单链表带环,如果快指针走到NULL节点,则链表不带环; 代码实现如下:pSListNode IsCircleList(pSListNode...

2018-07-15 14:01:46 454

原创 判断两个不带环的链表是否相交,若相交,求交点。

问题描述:判断两个不带环的链表是否相交,若相交,求交点。1、判断是否相交 思路:分别遍历两个链表,比较两个链表的最后一个节点是否相等,如果相等,则相交,如果不相等,则不相交。 2、代码实现如下:bool IsListIntersection(pSListNode pHead1, pSListNode pHead2){ pSListNode cur1 = pHead1; ...

2018-07-15 13:43:18 223

原创 单链表的基本操作

C语言实现单链表单链表的基本功能:1、单链表的尾插 2、单链表的头插 3、单链表的尾删 4、单链表的头删 5、单链表的销毁 6、打印单链表 7、单链表的销毁(顺着销毁) 8、单链表的销毁(逆着销毁) 9、单链表节点的查找操作 10、单链表任意位置的插入操作 11、单链表任一节点的删除代码实现SList.h文件#define _CRT_SECURE_NO_...

2018-07-06 14:46:19 1586

原创 c语言

在C语言中 strcat、strcmp、strcpy、strlen、strchr和 strstr函数都被包含在头文件中,也就是要调用它们时要在程序前面包含头文件,也就是写这个语句:#include 1、strcat将第二个字符数组中的字符串连接到前面字符数组的字符串的后char str1[30]="People's Republic of";char str2[]="Chi

2018-07-01 13:23:08 217

原创 C语言实现顺序表

使用C语言实现顺序表顺序表的主要功能有: 1、初始化顺序表 2、顺序表的头插 3、顺序表的尾插 4、顺序表的头删 5、顺序表的尾删 6、顺序表的任意点插入 7、顺序表的查找删除 8、顺序表的排序 9、清空顺序表 10、打印顺序表具体代码实现如下:SeqList.h#include <stdio.h>#include <string.h&g...

2018-07-01 13:21:16 1748

原创 深入理解孤儿进程与僵尸进程

僵尸进程定义:僵尸进程: 一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait/waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。 孤儿进程:一个父进程退出,而他的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程(进程号为1的进程)所收养,并由init进程对它们完成状态收集工作。...

2018-06-26 17:24:28 359

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除