- 博客(6)
- 收藏
- 关注
原创 约瑟夫环之循环链表
约瑟夫环的定义约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 结果+1即为原问题的解。(来自360百科)图如有如有侵权,请联系删除!!!1、定义链表2、创建链表3、主函数部分4、运行结果...
2020-05-21 10:30:48
868
原创 合并两个有序的链表
题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所 有节点组成的。示例输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]思路我们可以递归地定义两个链表里的 mergeTwoLists操作,也就是说,两个链表头部值较小的一个节点与剩下元素的 mergeTwoLists操作结果合并。递归法struct ListNode { int value; ListNode *ne
2021-03-07 22:45:24
150
原创 比较排序的方法
排序的算法主要有两种:比较排序与非比较排序比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。本文主要讲解比较排序中的冒泡排序、选择排序、插入排序1、冒泡排序它重复地遍历过要排序的元素,依次比较相邻两个元素,如果他们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。2、选择排序初始
2020-10-10 00:19:11
2278
原创 经典面试题之逆序打印链表
前几天面试,遇到这样一个题目!!题目:输入一个链表的头节点,从头到尾反过来打印每个节点的值。解题方法:运用递归算法代码实现如下:#include<iostream>#include<malloc.h>using namespace std;typedef struct node{ int val; struct node *next; }node, *Linklist;void _print(Linklist head){ Linkli
2020-10-08 23:16:40
200
原创 如何判断单链表是否有环
单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形成一个环形结构。判断一个链表是否有环,通常使用快慢指针的方法,也就是说一个每次指针走两步,一个指针每次只走一步,如果链表有环,则两个指针总会在一个节点上相遇,若无环,则不会相遇。代码实现如下:#includeusing namespace std;typedef struct node{int value;struct node *next;}*Linklist;int HasCycle
2020-10-07 22:24:54
734
原创 递归函数求阶乘
递归函数如有侵权,请联系删除!1、递归函数的定义在一个函数的函数体中调用它本身。2、示例#include<stdio.h>int fac(int n){ int result; if(n<2) result = 1; else result = fac(n-1)*n; return result;}int main (int argc,intargv[]){ int result=0; int n; printf
2020-05-26 11:40:49
566
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅