アルファベット順にリンクされたリストを名前で簡単にソートできるかどうかお尋ねします。可能だと思いますが、方法がわかりません。それを手伝ってもらえますか?とても感謝しています。
「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;
}