链表常见操作

面试常会考到链表和C库函数的操作,特地整理下了链表的常用函数,以供参考:
一.链表
链表定义如下:
为了程序的可读性,LinkList表示链表头节点指针,用于表示一个链表,pNode表示节点指针

另外我们创建的链表是带头结点的链表,即单链表的首元结点(存放第一个数据元素的结点)之前附设一个头结点(数据域什么都不放),称之为带头结点的单链表,反之就是不带头结点的单链表。

1.创建链表
(1)顺序创建链表
p是临时节点指针,指向最后一个节点.增加一个节点时实际上就是在链表尾部插入一个新节点.

(2)逆序创建链表
逆序创建链表时就是将新的节点(pNew)插入到Head节点之后.

2.获取某个指定结点的值

3.插入元素

4.删除元素

5.反序链表
最简单就是前插法,将头结点摘下来,然后采用前插法依次插入,例如:
初始:      head   ->   1   ->   2   ->   3
第一步:   head
第二步:   head   ->   1
第三步:   head   ->   2   ->   1
第四步:   head   ->   3   ->   2   -> 1

6.找出链表中间节点
采用两个节点指针,一个一次移动2个节点,一个一次移动一个节点,这样只需偏历一次链表就可以找到中间节点了.

7.判断一个单链表是否有环
这道题是《C专家编程》中的题了.这里采用的算法是一个指针一次走一步,另一个一次走两步,如果链表有环,那么这两个指针一定会相遇.

8.快速排序


二.C库函数
1. itoa
数字转换为字符串

2.atoi
字符串转换成整型数

上面的这个比较简单,下面看看微软的和glibc里的实现
微软:

glibc:

3.strcpy

4.memcpy

5.memmove
memmove和memcpy的区别是考虑的地址重叠情况

6.memset

7.strcmp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值