【解決方法】この問題をコーディングするにはどうすればよいですか


これは、以下のような名前と性別の情報を持つ構造の単一のリンクされたリストです。 図 1 (性別と名詞の両方を混合した順序で)。 与えられたプログラムを編集して完成させてください。図 1 のリンクされたリストは、女性の名前 (アルファベットの昇順) が最初に表示され、その後に男性の名前 (アルファベットの降順) が続きます (以下の図 2)。 どうすればいいですか?

私が試したこと:

C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//Creating the struct
struct Student {
	char name[50];
	char gender;
	struct Student* next;
};

struct Student* insertNode(char* name,
	char gender, struct Student* list)
{
	struct Student *s;
	//Allocate memory for node (malloc operation)
	s = (struct Student* )malloc(sizeof(struct Student));
	if (s == NULL)  {
		printf("Memory allocation failed.");
		return list;
	}
	strcpy(s->name, name);
	s->gender = gender;
	s->next = list; //list is the start of the list
	list = s;

	return list;
}
//Sorting function
struct Student* sortList(struct Student* list)
{
	//Write your code here
}

//Printing function
void printList(struct Student * list)
{
	while (list != NULL) {
		printf("%s\t%c\n", list->name, list->gender);
		list = list->next;
	}
}

int main()
{
	//Creating an Initial Node Variable
	struct Student* head = NULL;
	//Call to functions
	head = insertNode("Cenk", 'M', head);
	head = insertNode("Ceyda", 'F', head);
	head = insertNode("Esra", 'F', head);
	head = insertNode("Okan", 'M', head);
	head = insertNode("Tugce", 'F', head);
	head = insertNode("Mehmet", 'M', head);
	head = insertNode("Ayse", 'F', head);
	head = insertNode("Merve", 'F', head);
	head = insertNode("Sedat", 'M', head);
	head = insertNode("Ahmet", 'M', head);
	//call to sorting function
	head = sortList(head);

	printList(head);

    return 0;
}

解決策 1

いくつか始めてみてください C チュートリアルを学ぶ またはいくつか ビデオチュートリアル.

あなたがいくつかを訪問するよりも リンクリストのチュートリアル ただし、アーキテクチャと原則を理解していることを確認してください。 そうしないと、先生の質問に答えられないことがあります。

いくつかのヒント: わかりやすい名前の関数と構造体を使用し、Visual Studio などの IDE をインストールしてください。

解決策 2

プロトタイプはソートされたリストへのポインターを返しますか? insertNode() と同じように、head を参照として実装する方が理にかなっているでしょう。 その後、戻り値を保存できます。

C
sortList(struct Student** head);

ここには明らかに 2 つのリストがあり、それぞれアルファベット順に並べ替えられます。 リストごとに個別のヘッドを宣言することはおそらく理にかなっています。 次に、元のリストを繰り返し処理し、現在の要素を適切なリストに挿入します。 最後に、2 つのリストを連結し、新しいヘッドを割り当てます。

コメント

タイトルとURLをコピーしました