在devc++中,对链表串类型进行定义,用malloc函数为空链表串分配存储空间,建立一个空链表串,用scanf函数输入若干串任意字符串,实现字符串的查找的完整代码
时间: 2024-10-29 12:21:05 浏览: 9
在Dev-C++中,我们通常会定义一个结构体来表示链表节点,包含字符数组和指向下一个节点的指针。下面是一个简单的示例,展示如何定义链表、分配内存、输入字符串以及实现字符串查找功能:
```cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链表节点结构
struct ListNode {
char str[100];
struct ListNode* next;
};
// 创建一个空链表
ListNode* createEmptyList() {
ListNode* head = (ListNode*) malloc(sizeof(ListNode));
if (!head) {
printf("Memory allocation failed.\n");
return NULL;
}
head->next = NULL;
return head;
}
// 向链表添加新元素
void addStringToList(ListNode** head, const char* input) {
ListNode* newNode = (ListNode*) malloc(sizeof(ListNode));
if (!newNode) {
printf("Memory allocation failed for new node.\n");
return;
}
strcpy(newNode->str, input);
newNode->next = *head;
*head = newNode;
}
// 查找链表中的字符串
bool searchInList(ListNode* head, const char* target) {
ListNode* curr = head;
while (curr != NULL) {
if (strcmp(curr->str, target) == 0) {
return true;
}
curr = curr->next;
}
return false;
}
int main() {
ListNode* head = createEmptyList();
// 输入并添加字符串到链表
int numStrings;
printf("Enter the number of strings to add: ");
scanf("%d", &numStrings);
for (int i = 0; i < numStrings; ++i) {
char input[100];
printf("Enter string %d: ", i + 1);
scanf("%s", input);
addStringToList(&head, input);
}
// 查找字符串
char target[100];
printf("Enter a string to search: ");
scanf("%s", target);
if (searchInList(head, target)) {
printf("Found the string.\n");
} else {
printf("String not found in the list.\n");
}
// 清理内存
ListNode* temp = head;
while (temp != NULL) {
ListNode* nextTemp = temp->next;
free(temp);
temp = nextTemp;
}
return 0;
}
```
在这个代码示例中,我们首先创建了一个空链表,然后通过`addStringToList`函数输入字符串并将其添加到链表中。接着,用户可以输入目标字符串进行查找。注意,在程序结束时别忘了清理动态分配的内存。
阅读全文