Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在第n个位置之后在单链表中插入新节点?_C_Singly Linked List_Insertion - Fatal编程技术网

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=

好的,我想在C中的单链表中的第n个位置插入一个新节点,不是结束或开始,但搜索后得到的是如何在链表的开始或结束处插入新节点。感谢您的帮助。
谢谢。

也许是这样的吧

 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;
}

这些解决方案之间有一半的距离,但你必须计算步骤。我会给你代码,等等。。。