在链表查找一个字符串 查找之后在其节点后插入一个字符串并输出插入后的字符串 c语言
时间: 2024-10-07 21:02:09 浏览: 20
在C语言中,查找和插入操作通常涉及到链表数据结构。首先,我们需要定义一个链表节点,包含一个字符串和指向下一个节点的指针。以下是步骤:
1. **定义链表节点**:
```c
typedef struct ListNode {
char* str;
struct ListNode* next;
} ListNode;
```
2. **查找函数**:
创建一个`findNode`函数,遍历链表查找目标字符串。
```c
ListNode* findNode(ListNode* head, const char* target) {
ListNode* current = head;
while (current != NULL && strcmp(current->str, target) != 0) {
current = current->next;
}
return current;
}
```
3. **插入函数**:
找到目标节点后,创建一个新的节点,并将其插入到现有节点之后。
```c
void insertAfterNode(ListNode* node, const char* newNodeStr) {
if (node == NULL) return; // 如果没找到节点,则不做插入
ListNode* newNode = malloc(sizeof(ListNode));
newNode->str = strdup(newNodeStr);
newNode->next = node->next;
node->next = newNode;
}
```
4. **输出插入后的链表**:
遍历修改后的链表并打印每个节点的内容。
```c
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%s -> ", temp->str);
temp = temp->next;
}
printf("NULL\n");
}
```
5. **主函数示例**:
整合上述所有功能,在主程序中使用。
```c
int main() {
ListNode* head = createLinkedList(); // 初始化链表
// ... (假设已有一个初始链表)
char* target = "target"; // 查找的目标字符串
char* newNodeStr = "inserted string"; // 插入的新字符串
ListNode* foundNode = findNode(head, target);
if (foundNode) {
insertAfterNode(foundNode, newNodeStr);
printList(head); // 打印插入后的链表
}
return 0;
}
```
这里假设已经有了`createLinkedList()`函数用于初始化链表。记得处理内存分配和释放以避免内存泄漏。
阅读全文