- 博客(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&lt;int&gt; printListFromTailToHead(ListNode* head) { stack&lt;int&gt; arr; vector&lt;int&gt; 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&lt;iostream&gt;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&lt;iostream&gt;using namespace std;#include&lt;math.h&gt;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-&gt;_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
原创 判断单链表是否带环?若带环,求环的长度?求环的入口点
问题描述:判断单链表是否带环?若带环,求环的长度?求环的入口点?并计算每个算法的时间复 杂度&amp;空间复杂度。 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关注的人