我想问你,是否可以简单地对名称按字母顺序排列的链表进行排序?我认为这是可能的,但我不知道如何。你能帮我解决这个问题吗?我将非常感激。
按下“i”应该扫描新名称并将这个名称添加到链接列表中,然后按字母顺序排序这个列表“d”按下应该显示整个排序列表
"k" 按下的程序结束
我用结构数组做到了这一点,它工作得很好,但我不知道如何用链表做同样的事情......
非常感谢 :)
这是代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct list{
char name[100];
struct list *next;
}LIST;
int main()
{
int i, n, k = 0, v = 0, m = 0, j = 0;
char str[100], c;
LIST *p_first = NULL, *p_act = NULL, *p_prev = NULL;
while((c=getchar())!='k')
{
if(c=='i')
{
if(k == 0)
{
p_first = (LIST *) malloc(sizeof(LIST)); //scan first element of struct
scanf("%s", p_first->name);
p_act = p_first;
}
else
{
p_act->next = (LIST *) malloc(sizeof(LIST)); //scan next element of struct
p_act = p_act->next;
scanf("%s", p_act->name);
//here should be code to sort text alphabetically
}
p_act->next = NULL;
k++;
}
else if(c=='d')
{
//display all elements of linked list
for(i = 0; i < k; i++) {
if(i == 0)
p_act = p_first;
else
p_act = p_act->next;
printf("%s\n", p_act->name);
}
}
}
getchar();
return 0;
}