编程实现一个单链表节点的插入
2017-08-07 10:37
239 查看
【解析】:
向单链表中某个位置处(第pos个节点)之后插入节点, 这里分为插入到链表首部、插入到链表中间,以及链表尾端3种情况。//在单链表pos位置处插入节点,返回链表表头指针
//pos从0开始计算,0表示插入到head节点后面
node *insert_node(node *head, int pos, int data)
{
int i = 0;
node *item = NULL;
node *p = head->next;
item = (node *)malloc(sizeof(node)); //新建一个节点item
item->data = data;
if(pos == 0) //插入到链表头后面
{
head->next = item; //head后面是item
return head;
}
while(i < pos -1) //通过循环定位到要插入那个节点之前
{
p = p->next;
++i;
}
item->next = p->next; //item指向原pos节点的后一个节点
p->next = item; //把item插入到pos的后面
return head;
}
摘自《C和C++程序员面试秘笈》
向单链表中某个位置处(第pos个节点)之后插入节点, 这里分为插入到链表首部、插入到链表中间,以及链表尾端3种情况。//在单链表pos位置处插入节点,返回链表表头指针
//pos从0开始计算,0表示插入到head节点后面
node *insert_node(node *head, int pos, int data)
{
int i = 0;
node *item = NULL;
node *p = head->next;
item = (node *)malloc(sizeof(node)); //新建一个节点item
item->data = data;
if(pos == 0) //插入到链表头后面
{
head->next = item; //head后面是item
return head;
}
while(i < pos -1) //通过循环定位到要插入那个节点之前
{
p = p->next;
++i;
}
item->next = p->next; //item指向原pos节点的后一个节点
p->next = item; //把item插入到pos的后面
return head;
}
摘自《C和C++程序员面试秘笈》
相关文章推荐
- 编程实现一个单链表节点的删除
- java实现单链表的添加和插入;评论中设定一个node类节点操作
- 实现双向链表删除一个节点P,在节点P后插入一个节点
- 编程实现单链表的删除节点
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个
- javascript实现把一个节点插入到另一个节点之后
- 线性表的存储结构优缺点及编程实现一个单链表的建立,测长,打印
- 实现一个单链表的建立、测长、打印、删除、插入
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- day02逆置/反转单链表+查找单链表的倒数第k个节点+实现一个Add函数不用四则运算
- 基础笔试题:编程实现一个单链表的建立、测长、打印
- 面试题2 编程实现单链表删除节点
- 编程实现一个单链表的建立/测长/打印
- 编程实现一个单链表的查找
- 实现一个 链表 有序插入新节点
- 一个用Java实现的双向队列,可以分别在头尾插入和删除节点
- [002]链表笔记--编程实现一个单链表的创建/测长/打印
- 问题9:编程实现一个单链表的建立/测长/打印以及结点的删除。
- 实现一个单链表的建立、测长、打印,插入,排序,逆置
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置