在devc++中,对链表串类型进行定义,用malloc函数为空链表串分配存储空间,建立一个空链表串,用scanf函数输入若干串任意字符串,实现字符串中第n个元素的查找的完整代码
时间: 2024-10-29 14:21:04 浏览: 36
字符串数据结构实现(链表方式)
在Dev-C++中,我们可以使用结构体来定义链表节点,并利用malloc动态分配内存。首先,我们定义一个链表节点结构:
```cpp
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
struct ListNode {
char data[50]; // 假设每个字符串最多50字符
struct ListNode* next;
};
// 创建空链表
ListNode* createEmptyList() {
return (ListNode*) malloc(sizeof(ListNode)); // 分配内存给头节点
// 链表初始化:设置next为NULL
((ListNode*)malloc(sizeof(ListNode)))->next = NULL;
}
```
接下来,我们需要输入字符串并插入到链表中:
```cpp
void insertStringToList(ListNode** head, int n) {
if (*head == NULL) {
*head = createEmptyList();
} else {
ListNode* newNode = (ListNode*) malloc(sizeof(ListNode));
scanf("%s", newNode->data);
newNode->next = *head;
*head = newNode;
}
}
// 查找第n个元素的函数
char findElement(ListNode* head, int n) {
if (n <= 0 || head == NULL) {
printf("Invalid index.\n");
return '\0';
}
ListNode* current = head;
for (int i = 0; i < n - 1 && current != NULL; i++) {
current = current->next;
}
if (current == NULL) {
printf("Element not found at position %d.\n", n);
return '\0';
}
return current->data;
}
```
现在你可以创建一个链表、插入字符串并查找指定位置的元素了。以下是完整的示例:
```cpp
int main() {
ListNode* head = NULL;
// 输入字符串并添加到链表
int numStrings;
printf("Enter the number of strings to insert: ");
scanf("%d", &numStrings);
for (int i = 0; i < numStrings; i++) {
insertStringToList(&head, i + 1); // 开始计数从1开始
}
// 查找第n个元素
int n;
printf("Enter the position to search (1-based indexing): ");
scanf("%d", &n);
char element = findElement(head, n);
if (element != '\0') {
printf("The string at position %d is: %s\n", n, element);
}
return 0;
}
```
阅读全文