C 如何在第n个位置之后在单链表中插入新节点?
好的,我想在C中的单链表中的第n个位置插入一个新节点,不是结束或开始,但搜索后得到的是如何在链表的开始或结束处插入新节点。感谢您的帮助。C 如何在第n个位置之后在单链表中插入新节点?,c,singly-linked-list,insertion,C,Singly Linked List,Insertion,好的,我想在C中的单链表中的第n个位置插入一个新节点,不是结束或开始,但搜索后得到的是如何在链表的开始或结束处插入新节点。感谢您的帮助。 谢谢。也许是这样的吧 void insert_at(list_node **list, list_node *new,int offset) { while(offset-- && (*list)->next ) list=&((*list)->next); new->next=
谢谢。也许是这样的吧
void insert_at(list_node **list, list_node *new,int offset)
{
while(offset-- && (*list)->next )
list=&((*list)->next);
new->next=(*list)->next
(*list)->next=new;
}
我自己找到了解决办法。 这是我的算法- 步骤1-给定一个链表,为其编制索引 步骤2-请求索引,用户希望在索引之后插入新节点 步骤3-遍历链表,直到达到该索引 步骤4-创建一个新节点,该节点指向当前索引之后的节点 步骤5-将用户输入的索引节点指向新节点 瞧,完成了 这将起作用:
void InsertNode(int position, int newdata)
{
struct Node* temp = (struct Node* )malloc(sizeof(struct Node* ));
temp->data=newdata;
struct Node* temp2=head;
if(position==1)
{
temp->next=temp2;
head=temp;
return ;
}
for(int i=1;i<position;i++)
{
temp2=temp2->next;
}
temp->next=temp2->next;
temp2->next=temp;
return;
}
这些解决方案之间有一半的距离,但你必须计算步骤。我会给你代码,等等。。。