无法理解[else statement]块中的步骤。 请尝试帮助我。我正在尝试在第n个位置插入一个节点,请记住,除非已创建第(n-1)个节点,否则无法创建第n个位置的节点。
编辑:-现在我已经发布了完整的代码(有效),
#include<iostream>
using namespace std;
struct Node{
int data;
Node*next ;
};
void insertlinkedlist(Node**head,int data,int position)
{
int k = 1;
Node *p,*q,*newNode;
newNode=(Node*)malloc(sizeof(Node));
if(!newNode)
{
cout<<"Memory leak";
return;
}
newNode->data = data;
p=*head;
if(position ==1)
{
newNode ->next = p;
*head = newNode;
}
else {
while(p!=NULL&k<position){
k++;
q=p;
p = p->next;
}
q->next = newNode;
newNode ->next = p;
}
}
void display(Node*head)
{
Node*ptr = head;
while(ptr!=NULL)
{
cout<<ptr->data<<" ";
ptr=ptr->next;
}
}
int main(){
Node*head = NULL;
insertlinkedlist(&head, 34, 1);
insertlinkedlist(&head, 3, 2);
insertlinkedlist(&head, 13, 3);
display(head);
cout<<endl;
}
输出
34 3 13
答案 0 :(得分:0)
当没有在第一个位置插入元素时,将执行else语句。在用1引用的代码中,我认为用0声明第一个位置将是更好的方法。
当指针有效时,while语句p!=null
返回true(= 0)。该值按位与返回值k<position
相加。因此,当您位于链表的最后一个元素或指定位置时,while语句会中断。
在执行while语句后,将新Node插入到q的末尾或实际指定位置,该值将在while语句中进行计算。之后,将下一个元素插入newNode
之后。想象一下在位置3处有一个新元素。然后,该元素在位置3处,然后在3之后的所有内容都从位置4开始。