【解析】:
向单链表中某个位置处(第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++程序员面试秘笈》