c语言
代码里的守护者
于是我们相爱,手心湿的像海
展开
-
字符串的左旋和右旋
实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符的到BCDA ABCD左旋两个字符的到CDAB#include #include void reverse(char arr[], int s, int e) { while(s<e) { char tmp; tmp = arr[s]; arr[s] = arr[e]; a原创 2017-07-31 13:37:01 · 345 阅读 · 0 评论 -
sizeof的详尽计算结构体字节数方法
Sizeof用法 本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总结出VC中sizeof的主要用法。 1、 sizeof应用在结构上的情况 请看下面的结构: struct MyStruct { double dda1; char dda; int type }; 对结构MyStruct采用转载 2017-08-07 16:23:36 · 1244 阅读 · 0 评论 -
C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质:int nArray[10] ={ 0 }; int *p = nArray; printf("nArray:%p , p = %p\n", nArray,p);打印出来的将会是两个相同的值.但是数组名并不意味着和指针完全相同, 数组名还有另一个原创 2017-08-01 20:49:38 · 542 阅读 · 0 评论 -
模拟实现strstr,memcpy,memmove
模拟实现strstr#include #include char *my_strstr(char *dest, char *src) { char *p = NULL; char *s = NULL; assert(dest && src); if(*src == 0) return NULL; while(*dest) { p = dest;原创 2017-08-05 20:16:27 · 220 阅读 · 0 评论 -
函数的调用过程
函数的调用过程: 以此程序为例, #include int Add(int x, int y) { int ret = 0; ret = x+y; return ret; } int main() { int a = 10; int b =20; int ret = 0; ret = Add(a,b); printf("ret = %d\n",原创 2017-07-29 12:08:24 · 253 阅读 · 0 评论 -
复杂链表的复制
题目:有一个复杂链表,其结点除了有一个pNext指针指向下一个结点外,还有一个pSibling指向链表中的任一结点或者NULL。其结点的定义如下: struct ComplexListNode { int val; ComplexListNode* pNext; ComplexListNode* pSibling; }; 下图是一个含有4个结点的该类型复杂链表。原创 2018-01-24 13:15:11 · 176 阅读 · 0 评论 -
C语言实现单链表面试题
1.比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? 链表 顺序表 每个元素的访问 每个节点都需要通过指针找到内存然后加载到缓存中 内存访问时,不需要多次从内存到缓存的步骤 头插,头删,中间位置 直接增加或删除节点 在插入或删除之前要先对之后的数据进行挪动 尾插,尾删 需要对空间进行操作 直接对数据进行操作,空间是之前原创 2018-01-23 21:55:24 · 213 阅读 · 0 评论 -
C语言单链表面试题(进阶)
结构体定义如下: typedef struct ListNode { DataType data; struct ListNode* next; }ListNode; 1.判断单链表是否带环?若带环,求环的长度?求环的入口点?并计算每个算法的时间复杂度&空间复杂度。 ListNode* IsOrNotRing(ListNode* pHead) { ListNode* slow =原创 2018-01-24 17:20:17 · 248 阅读 · 0 评论