gpt4 book ai didi

c - 将一个链表插入另一个链表

转载 作者:行者123 更新时间:2023-11-30 17:50:15 25 4
gpt4 key购买 nike

我有一个由像这样的字符组成的链接列表......

node1 - "p"
node2 - "o"
node3 - "p"

我需要一个接受三个参数的函数...

node *replaceChar(node *head, char key, char *str)

此功能的规定。 head 是列表的头部,'key' 和 'str' 保证仅包含字母数字字符(A-Z、a-z 和 0-9)。 str 的范围可以从 1 到 1023 个字符(含)。

所以如果我用这些参数调用这个函数..

node *head == /*the head of the list to be examined*/

char key == "p"

char *str == "dog"

新列表将如下所示...

node1 - 'd'
node2 - 'o'
node3 - 'g'
node4 - 'o'
node5 - 'd'
node6 - 'o'
node7 - 'g'

“p”的所有实例均替换为“dog”

我有一个 toString 函数,它接受一个字符串并将其转换为链表并返回头。因此,假设您可以在 str = "dog"上调用该函数,所以...

toString(str) == /*this will return the head to the list made from the str*/

如果不清楚我的问题是什么......我对如何编写需要三个参数的replaceChar函数感到困惑......我可以使用字符串创建一个新列表并找到 key 的所有实例,但使新列表适合旧列表而不丢失指针真是要了我的命。

我已经尝试过这个...

while(head->data != NULL)
{
if(head->data == key)
{
node *newListHead = toString(str);

head = newListHead;

/*here I lose track of the old list*/

最佳答案

你可以这样开始:

node *replaceChar(node *head, char key, char *str) 
{
node *cur, prev;
for (cur = head, prev = NULL; cur != NULL; prev = cur, cur = cur->next)
if (cur->ch == key) {
node *hstart = toString(str);
for (node *hend = hstart; hend->next != NULL; hend = hend->next)
;
if (prev == NULL)
head = hstart;
else
prev->next = hstart;
hend->next = cur->next;
free(cur);
}

}

我的假设:您的节点结构如下:

sturct node {
char ch;
struct node* next;
};

toString(str) 工作得很好。

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

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