关闭

牛客网--链表中倒数第K个结点

题目描述 输入一个链表,输出该链表中倒数第k个结点。 基本思路: 先统计链表的长度length,然后倒数第k个结点就是从头开始数的第length - k + 1个结点。然后遍历整条链表,找到这个结点返回就可以了。 为了程序的鲁棒性,首先得判断链表是否为空,k值是否为0。如果是,则返回nullptr。如果不检查,遇到问题就会崩溃。 /* struct ListNode { int v...
阅读(74) 评论(0)

C++ 内存泄露的几种情况

1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存 2. 没有正确地清除嵌套的对象指针 3. 在释放对象数组时在delete中没有使用方括号 方括号是告诉编译...
阅读(14) 评论(0)

C/C++ -- 内存泄露和野指针

内存泄漏  用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,不能被任何程序再次使用,直到程序结束。即所谓内存泄漏。    注意:内存泄漏是指堆内存的泄漏。  简单的说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这...
阅读(15) 评论(0)

牛客网--用两个栈实现队列

思路: 队列的性质是先进先出,而栈的性质是先进后出。要用两个栈实现一个队列,首先用一个栈用来模拟进队。然后将模拟进队的栈中的元素依次出栈,存入另一个模拟出队的栈中。因为栈的先进后出的性质,元素的顺序全都倒过来了。这时在执行出栈的操作,就把最先进入模拟入队的栈的元素弹了出来。达到类似队列的操作。 class Solution { public: void push(int nod...
阅读(12) 评论(0)

牛客网--合并两条有序链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路: 先new出一个临时头结点,用来指向合并后的新链表并声明一个临时指针,指向这个头结点。声明两个指针分别指向两条链表的第一个结点,然后比较两个值。摘取较小值的结点,较小的结点接到新链表的后面。然后依次移动新链表的临时指针和摘取后的链表的临时指针,直至合并完成。 /* stru...
阅读(14) 评论(0)

牛客网--统计字符

题目描述 给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符。 输入描述: 输入数据一个字符串,包括字母,数字等。 输出描述: 输出首先出现三次的那个英文字符 思路:  题目说的是给定英文字符串,而要统计的是字母,注意是字母,这是个坑。用关联容器map,将读入的字符依次计数,当字符首次出现的字数为三时,输出这个字符,并终止程序。 #include...
阅读(23) 评论(0)

牛客网--替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 基本思路: 新建一条数组,作为储存替换之后的字符串。然后在把新的数组复制到原来的数组,达到替换的目的。class Solution { public: void replaceSpace(char *str,int leng...
阅读(17) 评论(0)

牛客网--二维数组查找

题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 //根据题目描述,二维数组自上而下递增,自左而右递增。所以第一列和最后一行的数字包括了整个二维数组出现的数字,其它位置都是重复。//所以左下角的数字是转折点,应当从这里开始查找 //所以从左下角开始查找,遇到比...
阅读(16) 评论(0)

牛客网--链表反转打印

/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; *///思路:利用栈先进后出的原理,遍历整条链表,依次压栈。然后依次出栈,把元素存到一个v...
阅读(24) 评论(0)

牛客网--句子反转

题目描述 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符) 输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子 #include #i...
阅读(20) 评论(0)

书店程序--C++

//类的实现#ifndef _BOOK_STORE_H_ #define _BOOK_STORE_H_ #include #include #include class Book_store { friend Book_store operator+(const Book_store &obj, const Book_store &ret); friend std::istream &o...
阅读(29) 评论(0)

统计文件中单词个数--c++实现

#include #include #include #include //用C++写比较简单,直接用map关联容器就很好解决 int main(int argc, char *argv[]) { std::ifstream read(argv[1]); std::string word; std::map word_count; if (argc 2) { std::c...
阅读(29) 评论(0)

单向链表--C语言实现

#include #include typedef struct Node { int data; struct Node *next; } link, *link_p; link_p Create(link_p head); void Found(link_p head); link_p Get_node_for_position(link_p head, int position...
阅读(33) 评论(0)

二分查找--c++实现

#include #include //这是我从c++ primer上看来的一小段程序,根据自己的理解写出来,加上了一些自己的注解 typedef std::vector::const_iterator iteratortype; typedef int elementtype; iteratortype BinarySearch(iteratortype begin, iteratortyp...
阅读(30) 评论(0)

统计文件中每个单词的个数--C语言实现

#include #include #include //这个程序是再Linux环境下写的,用到了命令行参数 struct Word //声明一个结构体,分别存储单词和对应单词的个数 { size_t time; char word[20]; }; void Copy(struct Word *array, FILE *read, const int length); void ...
阅读(60) 评论(0)

学生成绩管理系统--C语言

#include #include #include #include //记住打开文件流读入数据或写入数据之后要关闭文件,防止数据丢失 //项目描述 /* 这个程序实现从标准输入读取信息,或者从文件中读取信息。然后对信息进行操作,删除,修改,或者增加这些操作,再将其保存到文件当中。其中从标准输入读入的数据存储 再一条链表当中,可以直接对这条链表进行操作,再将其存入到文件当中...
阅读(44) 评论(0)
    个人资料
    • 访问:453次
    • 积分:146
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档