我目前正在创建用户输入的字符串的链表。截至目前,我的链表正在运行(我只需要释放内存即可)。但是,我试图检测用户输入中的逗号。如果有逗号,请使链表打印出新的一行,而忽略逗号。
有什么建议吗?
例如:
输入一个字符串:
你好,世界,你如何,你
当前输出为:
你好,世界,你如何,你
输出应为:
你好
世界
怎么样
是
您
这是我当前的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
struct Word
{
char* data;
struct Word* next;
};
struct Word* ptr = NULL;
void insert(char c)
{
struct Word* temp = (struct Word*)malloc(sizeof(struct Word));
temp->data = c;
temp->next = NULL;
if (ptr) {
struct Word* temp1 = ptr;
while(temp1->next != NULL) {
temp1 = temp1->next;
}
temp1->next = temp;
} else {
ptr = temp;
}
}
void print() {
struct Word *temp;
temp = ptr;
while(temp != NULL) {
printf("%c", temp->data);
temp = temp->next;
}
printf("\n");
}
int main(int argc, char *argv[])
{
int c;
printf("enter a string\n");
while (((c=getchar())!=EOF) && c!='\n') {
insert((char)c);
}
print(); /*print the list*/
return 0;
}
最佳答案
要打印新行中的每个单词,您只需要修改打印语句以检查链接列表中的,
字符即可。
void print() {
struct Word *temp;
temp = ptr;
char c;
while(temp != NULL) {
if (temp->data == ',') {
printf("\n");
temp = temp->next;
} else {
printf("%c", temp->data);
temp = temp->next;
}
}
printf("\n");
}
这将检查链接列表中是否有
,
并打印\n
以打印换行符并移至下一个节点。另外,在程序完成后,还应该释放链表,以避免内存泄漏。
void freeData(struct Word* head)
{
struct Word* tmp;
while (head != NULL)
{
tmp = head;
head = head->next;
free(tmp);
}
}
Code link
只是尝试一下。
关于c - 在链接列表中搜索元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42464685/