- 博客(20)
- 收藏
- 关注
原创 栈和队列
栈#includeusing namespace std;//栈先进后出 //队列先进先出 template class stack{public: stack() :_arr(NULL) , _size(0) , _capacity(5) { /*for (int i = 0; i < _size; i++) { arr[i] = _a
2017-08-07 23:53:20
201
原创 两个栈实现一个队列
#include#includeusing namespace std;//两个栈实现一队列 栈先进后出templateclass Queue{public: Queue() {} void Push(const T& x) { stack* tmp=NULL; if (!s1.empty())// { tmp = &s1; } else {
2017-08-07 23:50:15
173
原创 出栈入栈合理性
出栈入栈合理性,用两指针指向两数组,创建一新栈来存储元素。对于入栈数组的指针一直往下走,并入栈,当与出栈数组元素相等时,让栈中的元素pop,还原入栈出栈的过程。如果在这种情况下不处理的话,会导致入栈数组元素一直往下走,若入栈较多元素后连续出栈,会导致判断失误(入栈元素一直往后走,而之前早入栈的元素会没有处理到)。可以让出栈元素往后走并与栈顶元素比较(用栈的size来做循环条件)stack.
2017-08-07 23:00:22
540
原创 约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。void Joseph_Ring(pLinkList plist,int m)//约瑟夫环{ pLinkNode cur = plist->_pHead;
2017-07-27 18:46:45
255
原创 链表相交及交点求解
对于链表相交要分几种情况1、两无环单链表相交2、一无环与一有环链表不可能相交3、两有环链表相交pLinkNode Noloop_Point(pLinkList plist1, pLinkList plist2){ //两无环链表相交 pLinkNode p1 = Check_Loop(plist1); pLinkNode p2 = Check_Loop(plist
2017-07-27 18:42:42
325
原创 有环链表相关
判断链表是否有环,采用快慢指针相关思想,若无环则不会相遇pLinkNode Check_Loop(pLinkList plist) //快慢指针类似方法,若链表带环则会相遇{ assert(plist); pLinkNode fast = plist->_pHead; pLinkNode slow = plist->_pHead; /*fast = plist->_pHead
2017-07-26 12:15:29
227
原创 单链表
LinkList.h#include#include#includetypedef int DataType;typedef struct LinkNode{ DataType _data; struct LinkNode* next;}LinkNode,*pLinkNode;typedef struct LinkList{ LinkNode* _pHead;}Li
2017-07-25 22:05:07
177
原创 合并两链表
合并两链表,在对两有序链表应该做较详尽的分析1.一链表为空则合并结果为另一链表。2.合并过程中的大小比较。(为减少开辟节点所占空间,可以比较两链表第一个节点元素大小,并将头节点直接赋给新节点)3.两链表长度不同时的处理。List.h#include#include#includetypedef int DataType;typedef struct LinkNode
2017-07-25 21:08:42
191
原创 ARP协议
ARP协议作用: OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址在第三层, MAC地址在第二层。在网络通讯时,协议在发送数据包时,得先封装第三层(IP地址),第二层(MAC地址)的报头, 源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先被网卡接收到再去处理上层协议,如果接收后的数据
2017-06-24 09:45:23
314
原创 端口相关知识及CRC校验
计算机端口 计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,比如用于浏览网页服务的80端 口,用于FTP服务的21端口等等。
2017-06-19 09:37:25
2423
原创 守护进程
守护进程:在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。守护进程也称精灵进程。特点:
2017-06-18 11:19:18
231
原创 红黑树简单实现
红黑树特点:1.根节点为黑色2.每个红色节点的左右孩子为黑色节点,即无连续的红结点3.每条路径上的黑色节点相等4.最长路径不超过最短路径的二倍创建红黑树,在插入节点后(默认插入节点颜色为红色),要对红黑树进行判断并调整当父节点为红色(以下情况均是父节点为祖父节点左孩子,而父节点为祖父右孩子推理可得)相关代码:bool Insert(const
2017-04-10 13:40:56
279
原创 静态顺序表
SeqList.h#include#include #include #define MAX_SIZE 100typedef int DataType;typedef struct Seqlist{ DataType arr[MAX_SIZE];//顺序表的最大容量 int sz;//当前顺序表的容量}Seqlist,*PSeqList;void InitSeqL
2016-09-10 17:08:58
216
原创 通讯录动态实现
contact.h#include#include #include#include #include #include #ifdef __CONTACT__H_#endif __CONTACT__H_#define NAM_MAX 10#define SEX_MAX 5#define TEL_MAX 12#define ADDR_MAX 10#defi
2016-09-08 16:02:30
245
原创 实现字符串逆序存储
当使用函数来实现字符串逆序时,利用循环,使用一临时变量先保存首字符,再实现交换首尾字符串#include#include#include //递归实现字符串逆序void reverse(char *str){ int len=strlen(str); char tmp=*str; *str=*(str+len-1); *(str+len-1)='\0';
2016-08-08 14:01:47
853
原创 通讯录1
contact.h#include#include #include#include #ifdef __CONTACT__H_#endif __CONTACT__H_#define NAM_MAX 10#define SEX_MAX 5#define TEL_MAX 12#define ADDR_MAX 10#define MAX 1000typedef struc
2016-08-08 13:24:11
305
原创 找出单独的这些整形数
一整形数组中只有一个数出现一次,其他数成对出现,编程求取这个数利用异或,相异为1,相同为0,且是采用位运算(利用二进制位),循环整个数组,相同的数异或后为全零,与单独的这个整数异或后,仍为它本身,则找到。。。。。int find(int *arr,int sz){ int i=0; int n=0; for(i=0;i<sz;i++) { n ^= arr[i];
2016-07-26 11:47:49
193
原创 某些磨人的小程序
#include#include int main(){ int a=0,b=0,c=0,d=0,e=0; for(a=1;a<=5;a++) { for(b=1;b<=5;b++) { for(c=1;c<=5;c++) { for(d=1;d<=5;d++) { for(e=1;e<=5;e++) { if(
2016-07-04 18:41:37
328
原创 某数二进制位中1的个数
在求某数的二进制时,我们通常首先想到的是连除2的方法来求解,对于这道题,我们同样可以这样,再利用计数器数出1的个数#include int count_one_bits( int n){ int count=0; while(n) { if(n%2==1) { count++; } n=n/2; } return count;}int main(){
2016-06-13 13:26:58
184
原创 指针 数组
1.指针: int a=10; int *b=&a; 变量b被声明为指针,并用其他变量的地址予以初始化。指针的初始化是用&操作符完成的,用于产生操作数的内存地址。2.数组: int a; int b[10]; 变量b为数组,当下标和数组名一起使用,用于标识该数
2016-04-27 21:51:17
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人