gpt4 book ai didi

c - 在链表中插入一个元素

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

考虑包含五个元素的链表。1,2,3,4,5 a 没有'7'要在两个之后插入。我们将有一个 head 指向链表的第一个元素,而 ptr 指向最后一个。在 3 之前插入一个元素时,我们将从头到尾循环遍历链表,我们将引入另一个指针(prev)来保存先前的指针 address.ptr 将指向当前节点,如果找到匹配数据(3 ) 那么我们必须在 2 和 3 之间包含新节点。我们可以这样做,因为我们有 previous 指针。如何在不使用 previous 指针的情况下做到这一点。

编辑:

#include<stdio.h>
#include<stdlib.h>
struct list
{
int data;
struct list* link;
};

struct list *head=NULL;
struct list *tail=NULL;

void createList(int value);
void displayList(struct list* head_node);
void insertNewNode();
int value;


int main()
{
int i;
for(i=0;i<5;i++)
{
printf("\nEnter the data to be added into the list:\n");
scanf("%d",&value);
createList(value);
}
printf("\nCreated Linked list is\n");
//displayList(head);
printf("\nInsert a node\n");
insertNewNode();
displayList(head);
return 0;
}
void insertNewNode()
{
int val;
struct list* ptr=NULL,*new_node,*prev=NULL;
new_node = (struct list*)malloc(sizeof(struct list));
printf("Enter the data to be inserted!");
scanf("%d",&val);

for(ptr=head;ptr;ptr=ptr->link)
{
if(ptr->data == 3)
{
printf("Found");
new_node->data = val;
prev->link=new_node;
new_node->link = ptr;
}
prev = ptr;
}
}
void createList(int value)
{
struct list *newNode;
newNode = (struct list*)malloc(sizeof(struct list));
//tail = (struct list*)malloc(sizeof(struct list));
newNode->data = value;
if(head == NULL)
{
head = newNode;
}
else
{
tail->link = newNode;
}
tail = newNode;
tail->link = NULL;
}
void displayList(struct list *head_node)
{
struct list *i;
for(i=head;i;i=i->link)
{
printf("%d",i->data);
printf(" ");
}
printf("\n");
}

最佳答案

void insertNewNode()
{
int val;
struct list* ptr=NULL,*new_node;
new_node = (struct list*)malloc(sizeof(struct list));
printf("Enter the data to be inserted!");
scanf("%d",&val);

for(ptr=head;ptr;ptr=ptr->link)
{
if(ptr->data == 2)
{
printf("Found");
new_node->data = val;
new_node->link = ptr->link;
ptr->link = new_node;
}
}
}

更新:这可能是您想要的:

void insertNewNode()
{
int val;
struct list* ptr=NULL,*new_node;
new_node = (struct list*)malloc(sizeof(struct list));
printf("Enter the data to be inserted!");
scanf("%d",&val);

for(ptr=head;ptr->link;ptr=ptr->link)
{
if(ptr->link->data == 3)
{
printf("Found");
new_node->data = val;
new_node->link = ptr->link;
ptr->link = new_node;
}
}
}

这里:

if(ptr->link->data == 3)

您只需向前看,检查下一个节点是否具有您需要的值。

关于c - 在链表中插入一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300885/

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