[英]Linkedlist implementation
我正在尝试这个程序,要求我们以各种方式更改单词。
例如,如果给我们“ MISSISSIPPI”,则输出应为
MISP(发生顺序,无重复)
ISPM(频率)
IMPS(字母顺序)
我能够执行字母顺序的事情,也可以为出现的顺序编写代码。我能够成功运行字母功能,但是遇到CODEBLOCKS时遇到顺序功能时,代码会挂起。
void ord()
{
current = head1 ;
while(current != NULL)
{
current1 = current -> next ;
while(current1 != NULL)
{
if(current1 -> data == current -> data)
{
free(current1);
current1 = current1 -> next ;
}
else
current1 = current1 -> next ;
}
current = current -> next ;
}
ptr = head1 ;
while(ptr != NULL)
{
printf("%c" , ptr->data) ;
ptr = ptr -> next ;
}
}
在此功能中,当前指向列表的开头,而当前一个指向列表的下一个。 我增加当前值一并释放具有重复字母的节点。 我的查询是为什么代码必须停止? 也为频率事物提出一些逻辑。
提前致谢
我猜问题出在这里。
if(current1 -> data == current -> data)
{
free(current1);
current1 = current1 -> next ;
}
在这里,您要释放current1,然后进行推进。
我的建议是,您应该使用一个临时指针来保存“ current1”的位置,然后将其前进或进行任何其他操作。
MISP(发生顺序,无重复)
错误是:
if(current1 -> data == current -> data)
{
free(current1); // use a temporary varaible and move to next node and free
current1 = current1 -> next ;
}
ISPM(频率):快速提示。
取一个26个大小的数组(因为字母是26。例如: count[26]
)
对元素A说->增量A [0] ++;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.