自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

//遍历一遍找第K个节点//不足k个返回空Node* FindKNode(Node* pHead, size_t k){Node* slow = pHead, * fast = pHead;while (--k)//走k-1步{if (fast == NULL){return NULL;}fast = fast->next;}while (fas

2017-09-28 14:25:45 511

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

//遍历一遍,找中间节点//快慢指针问题Node* FindMidNode(Node* pHead){Node* slow = pHead, *fast = pHead;while (fast&&fast->next){slow = slow->next;fast = fast->next->next;}return slow;}void TestT

2017-09-28 14:25:21 514

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

//合并两个有序链表,合并后依旧有序//当第一个链表是空链表就把它和第二个链表合并,结果是第二个链表;同样,第二个链表是空表,合并结果是第一个链表;如果两都是空链表,合并结果也是空链表//比较两个链表的头结点,小的作为合并后的头结点,在剩余节点中,再次比较两个链表的头结点Node* MergeList(Node* pHead1, Node* pHead2){if (

2017-09-28 14:24:53 11019 1

原创 单链表排序(冒泡排序)

//单链表冒泡排序//需要三个指针cur,next,tail,tail指向每次冒泡冒到的终止位置//第一趟next为空停止,把cur给tail,再让cur和next到前面去再开始冒泡void BubbleSort(Node* pHead){Node* tail = NULL;if (pHead == NULL || pHead->next == NULL)//头指针为空,或

2017-09-28 14:24:25 1262 1

原创 逆置/反转单链表

//单链表逆置//3个指针n0,n1,n2void ReverseList(Node** ppNode){Node* n0 = NULL; Node* n1 = *ppNode;Node* n2 = n1->next;if (*ppNode == NULL){return;}while (n1){n1->next = n0;n0 = n1;

2017-09-28 14:23:51 265

原创 单链表实现约瑟夫环

//单链表实现约瑟夫环Node* Josephus(Node* hus, size_t k){Node* man, *next;assert(hus);man = hus;while (man->next != man){int count = k;while (--count){man = man->next;}next = man->next

2017-09-27 21:53:38 326

原创 在无头单链表的一个节点前插入一个节点

//无头单链表一个节点pos前插一个节点x//1 2 3 [x] 4 5,3所在位为pos位,把3和x互换位置void InsertFront(Node* pos, DataType x){Node* next,*tmp;assert(pos);next = pos->next;//4是nexttmp = BuyNode(pos->data);//tmp指向3pos

2017-09-27 21:52:58 910

原创 删除一个无头单链表的非尾节点

//删除非尾节点pos,无头结点//把pos的下一个值给pos,pos的下一个节点Free掉void EraseNonTail(Node* pos){Node* next;assert(pos && pos->next);//断言保证Pos和它的下一个节点都存在,这也保证了不删除尾节点next = pos->next;//先确定next是pos的下一个节点pos->da

2017-09-27 21:52:33 289

原创 从尾到头打印单链表

//从尾到头的打印//采用递归,头指针head的下一个节点如果不为空就一直向后挪动,为空就打印它,直到head为空跳出循环结束void PrintTailToHead(Node* head){if (head == NULL)   return;PrintTailToHead(head->next);printf("%d", (head->data));}voi

2017-09-27 21:52:02 256

原创 比较顺序表和链表

顺序表可以根据下标迅速找出节点;但是插入删除比较麻烦,需要整体挪动某一节点前或后的所有节点;顺序表申请空间是一大段一大段的,会浪费空间;顺序表适合在不动的时候使用。    链表只能从开头依次向后查找;插入或删除比较方便,只需要修改一到两个指针指向即可;链表是用几个申请几个,节省空间;链表适合在变化较多的时候使用。

2017-09-27 21:51:31 249

翻译 命名空间,输入输出流,重载,缺省参数,引用和指针区别

1.命名空间     命名空间是一个程序员自己命名的内存区域,他可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来,以免产生名字冲突。例如:namespace apple{    int a;    double b;}    namespace是定义命名空间所必需的关键字,apple是用户自己指定的命名空间的名字,

2017-09-25 23:10:38 294

原创 C++语言实现单链表的尾插,尾删,头插,头删等

#include #include #pragma oncetypedef int DataType;//因为PushBack要返回的类型如果需要换,在这里直接替换int就可以了,不用每个函数都换typedef struct Node//宏定义和typedef都是一种可维护性代码{DataType data;//定义一个DataType类型的数据datastruct N

2017-09-25 21:35:11 991

原创 字符串转换为整数

字符串转换为整数需要考虑很多种情况,如下:第一种情况:空指针第二种情况:空字符串第三种情况:空白字符第四种情况:中间有字母的int main(){char* p = "123a45";int num = atoi(p);printf("%d\n", num);system("pause");return 0;}atoi()函数遇见a就自动停下来了

2017-09-14 13:17:48 476

原创 字符串右循环移位

思路:给定一个字符串“abcdefghi”,右移一位则是先把最后一位的i保留起来,然后其他位按位从右向左依次往右挪一位,留下最开始那一位放入i即可。这里就需要一个tmp来保存i,要找到i,也需要知道字符串长度len,用strlen来计算len找到i,然后其余元素依次右移,再把之前保留的i放入最开始位置。这样就是右移一轮,外部加一个for循环,即可完成。 代码:#includ

2017-09-13 21:49:51 1135

原创 某二进制位置0或置1

思路:(1)现在要把00000000的第三位置1,即要求结果为00000100.想到借助00000001,把它的1左移三位,也就是position-1位,也就是下标为2的那一位,因为从右往左数是从0,1,到2.当然只是左移是不可以的,还要将左移之后的00000100按位和00000000或,得到结果为00000100,这样操作就能保证其他位不变。(比如如果没有进行这一步,题目要是给一个00

2017-09-13 21:00:11 6048

原创 二分查找的越界和死循环问题

个人看来,二分查找有两个易错点,那就是“越界”和“死循环”。这里拿左闭右闭和左闭右开来说,(1)左闭右开:int BinarySearch(SeqList* s, DataType x){int left = 0, right = s->size ;   //while (left {int mid = left + (right - left) / 2;if (s

2017-09-10 23:33:14 2277

原创 找出一个数组中只出现一次的两个数

思路:任意给一个数组 { 1, 1, 2, 2, 3, 3, 4, 4, 5, 6 },找出里面只出现一次的5和6,如果5和6分别在两个数组中,那么只要分别将两个数组中的元素异或即可分别得出两个数,这两个数就是5和6。1、首先将5和6分开放在两个数组中,这里考虑用到二进制, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6 的二进制分别是001,001,010,010,011,011,

2017-09-08 20:42:18 538

空空如也

空空如也

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

TA关注的人

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