c语言
zhu_931
这个作者很懒,什么都没留下…
展开
-
判断一个字符串是否为另一个旋转之后的字符串
判断一个字符串是否为另一个旋转之后的字符串原创 2016-12-08 21:14:33 · 580 阅读 · 0 评论 -
文件描述符fd和FILE的关系
1.FILE的内容 FILE在C中作为一个结构体存在结构如下: struct _iobuf { char *_ptr; //缓冲区指针 int _cnt; char *_base; //缓冲区基址 int _flag; //文件读写模式 int _file;原创 2017-05-08 12:39:28 · 650 阅读 · 0 评论 -
优化程序性能
本文参考《深入理解计算机系统》中的第五章,本文中有不详细的地方请查看原书。 本文会出现部分汇编代码,尽量注释,以下为可能出现的优化。 1. 两个指针指向同一个位置void twiddle1(int *xp, int *yp) //*xp进行加两次*yp{ *xp += *yp; *xp += *yp;}void twiddle2(int *xp, int *yp原创 2017-04-25 17:34:45 · 323 阅读 · 0 评论 -
有关单链表带环的问题
1.检查链表是否带环,若带求长度,环入口点。 设定两个快慢指针开始时指向起始位置,开始出发,如果这两个指针相交,那么存在环;从交点出发,当再次回到此点便可统计环长度;对与于环入口点,假设快指针每次走两个位置,慢一直走一个。2. 检查两链表否相交(链表不带环)如果两链表得最后一个位置相等,则相交。原创 2017-03-16 22:46:15 · 425 阅读 · 0 评论 -
单链表的合并,排序与翻转
1.单链表的合并: 合并两个有序(从小到大)链表,首先比较两链表第一个结点值的大小,将小的放入新的链表(创建的临时链表);然后将小的那条链表向后移动一个位置,重复比较。当然,在进行这些处理之前,先处理空链表的情况。2.单链表的排序: 这里排序方式采用之前熟悉的冒泡排序。3.单链表的翻转: 对翻转的要求:遍历一次。这里需要三个指针一个指向当前结点,一个指向下一个结点,一个保存翻转后的链表原创 2017-03-15 23:11:04 · 2095 阅读 · 0 评论 -
删除或插入无头单链表的非尾结点
解决方案为:一般情况我们想要删除一个结点,我们需要直到上上个位置,而现在并没有,所以我们只需要把下一位置值赋予当前位置,并删除下个位置,并将当前位置指向下下个位置。原创 2017-03-12 22:44:33 · 404 阅读 · 0 评论 -
删除单链表中某个元素
解决方案: 1.创建链表 2.遍历链表,发现有可能为空链表一个节点两个节点多个节点删除重复元素的时候有可能从第一个便重复原创 2017-03-08 23:06:09 · 2051 阅读 · 0 评论 -
有关顺序表操作的函数实现
#include "SeqList.h"void InitSeqlist(pSeqList p) // 顺序表初始化{ p->count = 0; memset(p->arr,0,sizeof(DataType)*MAX);}void PushBack(pSeqList p,DataType d) //后插{ assert(p); if(MAX == p->count原创 2017-03-06 22:40:26 · 377 阅读 · 0 评论 -
注释转换(从c到c++)
要完成这个问题要考虑以下因素:1. 换行问题/* int i = 0; */int j = 0;/* int i = 0; */int j = 0;2. /*与\*/匹配问题/*int i = 0;/*xxx*/ 3. 多行注释问题/*int i=0;int j = 0;int k = 0;*/int n = 0;4. 连续注释问题 /**/原创 2017-03-02 20:28:31 · 235 阅读 · 0 评论 -
链表翻转,每K个数翻转一次。
链表翻转,每K个数翻转一次,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6。 解题思路: 寻找每一段的开始与结束,对每一段进行翻转。代码如下(代码不含测试用例以及链表的构建): void _ReserveK(Node** begin, Node** end) {原创 2017-07-23 22:10:27 · 1485 阅读 · 0 评论