我在链接列表中的元素之后插入元素,但我的代码没有运行。
typedef struct Node
{
int info;
struct Node *next;
struct Node *prev;
}node;
node *head;
// w-the element to be inserted & z-the position after which it has to inserted
void insertpos(int w,int z)
{
int i;
node *ptr=head;
node *ptr1;
for(i=1;i<=z-1;i++)
{
ptr=ptr->next;
}
ptr1=(node*)malloc(sizeof(node));
ptr1->info=w;
ptr->next=ptr1;
((ptr->next)->next)->prev=ptr1;
}
答案 0 :(得分:1)
ptr->next=ptr1;
((ptr->next)->next)->prev=ptr1;
您正在更改新创建的指针ptr1旁边的ptr。 ptr1的下一个在这里显然是空的。你必须使它指向ptr的下一个节点
ptr1->next = ptr->next
然后你必须让ptr指向ptr1
ptr->next = ptr1
它会起作用,请发布您在控制台中看到的错误。
答案 1 :(得分:0)
您必须链接新节点的下一个节点和新节点之前的节点。
void insertpos(int w,int z)
{
int i;
node *ptr=head;
node *ptr1;
for(i=1;i<=z-1;i++)
{
ptr=ptr->next;
}
ptr1=(node*)malloc(sizeof(node));
ptr1->info=w;
ptr1->next=ptr->next->next; //linking new node *next pointer
ptr->next->next->prev=ptr1; //linking next node *prev to new node
ptr->next=ptr1; //ptr *next to new node
ptr1->prev=ptr; //new node *prev to previous node
}