首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C:将getline()创建的字符串存储在链表中?

将getline()创建的字符串存储在链表中,可以按照以下步骤进行:

  1. 创建一个链表结构,包含一个指向字符串的指针和一个指向下一个节点的指针。
  2. 使用getline()函数读取输入的字符串,并将其存储在一个临时的字符数组中。
  3. 动态分配内存来存储字符串,并将临时字符数组中的内容复制到新分配的内存中。
  4. 创建一个新的链表节点,并将新分配的内存地址存储在节点的指针中。
  5. 如果链表为空,则将新节点设置为链表的头节点。
  6. 如果链表不为空,则遍历链表,找到最后一个节点,并将新节点的指针存储在最后一个节点的下一个指针中。
  7. 重复步骤2-6,直到读取完所有的字符串。
  8. 链表中存储了所有的字符串。

以下是一个示例代码,演示了如何将getline()创建的字符串存储在链表中(C语言):

代码语言:txt
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义链表节点结构
typedef struct Node {
    char* str;
    struct Node* next;
} Node;

// 创建链表节点
Node* createNode(char* str) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->str = (char*)malloc(strlen(str) + 1);
    strcpy(newNode->str, str);
    newNode->next = NULL;
    return newNode;
}

// 将字符串存储在链表中
void storeStringInLinkedList(Node** head, char* str) {
    Node* newNode = createNode(str);
    if (*head == NULL) {
        *head = newNode;
    } else {
        Node* current = *head;
        while (current->next != NULL) {
            current = current->next;
        }
        current->next = newNode;
    }
}

// 打印链表中的字符串
void printLinkedList(Node* head) {
    Node* current = head;
    while (current != NULL) {
        printf("%s\n", current->str);
        current = current->next;
    }
}

// 释放链表内存
void freeLinkedList(Node* head) {
    Node* current = head;
    while (current != NULL) {
        Node* temp = current;
        current = current->next;
        free(temp->str);
        free(temp);
    }
}

int main() {
    Node* head = NULL;
    char input[100];

    // 读取字符串并存储在链表中
    while (fgets(input, sizeof(input), stdin) != NULL) {
        input[strcspn(input, "\n")] = '\0';  // 去除换行符
        storeStringInLinkedList(&head, input);
    }

    // 打印链表中的字符串
    printLinkedList(head);

    // 释放链表内存
    freeLinkedList(head);

    return 0;
}

这个示例代码演示了如何使用链表来存储getline()函数读取的字符串,并提供了打印链表和释放链表内存的功能。你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券