gpt4 book ai didi

c - 删除双向链表中的第 n 个节点

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:15 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct node
{
int data;
struct node *prev;
struct node *next;
};
struct node* HEAD;
void Deleteatn(int c)
{
struct node *store,*store1,*temp=HEAD;
if(c==1)
{
store=temp->next;
store->prev=NULL;
HEAD=store;
free(temp);
}

else
{
for(int i=1;i<c-1;i++)
temp=temp->next;

store=temp->next;
store1=store->next;
temp->next=store->next;
//store1->prev=temp;//DOUBT
free(store);
}
}
void print()
{
struct node *temp=HEAD;
while(temp!=NULL)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("\n");
}
void Insertatend(int b)
{
struct node *n;
n=(struct node *)malloc(sizeof(struct node));
n->data=b;
n->prev=NULL;
n->next=NULL;
if(HEAD==NULL)
HEAD=n;
else
{
struct node *store,*temp=HEAD;
while(temp!=NULL)
{
store=temp;
temp=temp->next;
}
store->next=n;
n->prev=store;
}
}
int main()
{
int a,b,c;
printf("How many Numbers need to be inserted?\n");
scanf("%d",&a);
for(int i=0;i<a;i++)
{
printf("Enter a number\n");
scanf("%d",&b);
Insertatend(b);
}
printf("The List is\n");
print();
printf("Enter which node need to be deleted?\n");
scanf("%d",&c);
Deleteatn(c);
printf("The List After Deletion is\n");
print();
return 0;
}

我在这里写了一个程序来删除双向链表中的第 n 个节点,我怀疑如果不做反向链接,输出是如何正确的。所以在双向链表中是不是必须同时进行前向和后向链接?

我提到代码行是有疑问的,没有那段代码,它是如何工作的???

最佳答案

回溯就可以发现问题所在。由于您正向前进,因此它像单向链表一样工作正常。

关于c - 删除双向链表中的第 n 个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45550663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com