关闭

两个有序链表的合并

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 1.递归方法struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; ListNode* Merge(ListNode*...
阅读(23) 评论(0)

约瑟夫问题2

约瑟夫问题是一个著名的趣题。这里我们稍稍修改一下规则。有n个人站成一列。并从头到尾给他们编号,第一个人编号为1。然后从头开始报数,第一轮依次报1,2,1,2…然后报到2的人出局。接着第二轮再从上一轮最后一个报数的人开始依次报1,2,3,1,2,3…报到2,3的人出局。以此类推直到剩下以后一个人。现在需要求的即是这个人的编号。...
阅读(23) 评论(0)

约瑟夫问题1

约瑟夫问题1: 约瑟夫问题是一个非常著名的趣题,即由n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的人出局。现在需要求的是最后一个出局的人的编号。 1.1数组法: 用一个数组记录所有人的状态,初始值为各自的变化,如果位置的人出局,则将其值设为0。int getResult(int n, int m) { // write code here...
阅读(15) 评论(0)

链表的反转

基本的算法思想: 首先要考虑链表为空和链表只有一个节点的情况; 在每一次反转的时候,需要记录当前节点的下一个节点和上一个节点,然后让其的next指针指向其前一个节点。ListNode* ReverseList(ListNode* pHead) { if(pHead==NULL || pHead->next==NULL) return pHead;...
阅读(12) 评论(0)

判断两个链表是否相交,及其第一个公共交点

输入两个链表,找出它们的第一个公共结点。 算法思路:若两个链表相交,则从交点开始连个链表的交点都相同。/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { publi...
阅读(20) 评论(0)

判断一个链表是否有环,并找出环的入口

一个链表中包含环,请找出该链表的环的入口结点。 ListNode* EntryNodeOfLoop(ListNode* pHead) { if(pHead==NULL || pHead->next==NULL) return NULL; ListNode *fast=pHead; ListNode *slow=pHead...
阅读(16) 评论(0)

链表的单个节点的删除

实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。 给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true 算法思路: 利用该节点可以访问其下一个节点,可以将下一个节点的值复制给该节点,将下一个节点删除。struct ListNode { int val; struct ListNode *next; ListNode(int...
阅读(19) 评论(0)

找出单链表的倒数第k个节点

首先需要对单链表进行检查,判断是否为空链表; 判断k的值是否合理; k的值是否大于链表的长度,k的值是否为0。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; class Solution { publi...
阅读(42) 评论(0)

类外定义的运算符的重载

在进行运算符的重载时,必须定义一个运算符重载函数,名字为operator,后随一个要重载的运算符。如: operator +; operator -;operator *;operator /; C++中运算符重载的规则: 1.C++中绝大部分的运算符都可以重载,不能进行重载的运算符如下: . 成员访问运算符 .*成员指针访问运算符 ::作用域运算符 Sizeof 长度运算符 ?:...
阅读(275) 评论(0)

类的构造函数和析构函数

1.类的构造函数 类的构造函数专门用于构造新对象、将值赋给它们的数据成员。构造函数没有声明类型。 (1)声明和定义构造函数 对于Stock类,它的构造函数为 Stock() {       .................... } 构造函数的参数表示的不是类成员,而是赋给类成员的值。因此,构造函数的参数名不能与类成员相同。 (2)默认构造函数 如果没有提供任何构造函数,则C...
阅读(47) 评论(0)

二叉树的存储结构

1.二叉树的顺序存储结构 二叉树的书序存储结构就是用一组地址连续的讯处单元来存放二叉树的数据元素。 二叉树的顺序存储结构存放节点的顺序为: 对改树中的所有节点进行编号,编号从小到大的顺序就是节点存放在里阿奴存储单元的先后次序。 编号的过程: 首先将根节点的编号定为1,然后按照从上到下、从左到右的顺序对每一个节点进行编号。 二叉树的顺序存储结构类型定义: typedef ElemTyp...
阅读(68) 评论(0)
    个人资料
    • 访问:785次
    • 积分:111
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档