我将如何创建一个允许我在链表中的任何索引处插入新节点的函数?这是结构:
struct node {
int data;
struct node* next;
};
这是函数,注意只有一个双指针、索引和数据参数。
void insertN(struct node** headRef, int index, int data);
以下是调用 insertN 后的结果:
[ HEAD ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ 5 ] -> [ NULL ]
insertN( &head, 3, -44);
[ HEAD ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ -44 ] -> [ 5 ] -> [ NULL ]
insertN( &head, 4, -55);
[ HEAD ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ -44 ] -> [-55 ] -> [ 5 ] -> [ NULL ]
insertN( &head, 0, -66);
[ HEAD ] -> [ -66 ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ 5 ] -> [ NULL ]
我知道如何向头部添加一个新节点,但在任何时候都不知道。我的想法是
void insertN(struct node** headRef, int index, int data) {
struct node* new;
int i;
for (i = 0; i <= index; i++) {
if (i == index) {
/* move what was here to next node and put in new node */
}
}
return;
}
我只是不确定如何去做这一切,因为如果节点中有东西,我也必须移动所有后续节点。