私はこれを3日間試みました。私がしなければならないことは、サッカー選手のリンクされたリストを作成することです. 各サッカー選手は以下の情報を持っています。
プレーヤーの名前 (最大 15 文字) プレーヤーのジャージ番号 (整数) プレーヤーが獲得したポイント (整数)
サッカー選手に関する情報を格納するには、Player という構造体を定義する必要があります。上記のデータ メンバーとは別に、構造体には Player 型の別の構造体を指すことができる別のポインター メンバーが必要です。リンク リストを作成するには、次のアルゴリズムに従います。
ヘッド ポインタと前のノード ポインタを宣言し、それらを NULL に設定します。
Player 構造を動的に作成し、これが最初のノードである場合は、新しく作成された構造を指すヘッドと前のポインターを作成します。
プレーヤー情報を入力して構造体に保存するようにユーザーに依頼します。ポインター メンバーを NULL に設定します。
最初のノードでない場合は、前のノードが指すノードのポインター メンバーを新しいノードに設定します。
続行するかどうかをユーザーに尋ねます。
- リンクされたリストの作成が完了していない場合は、ステップ 2 に進みます。
リンクされたリストを作成した後、私のプログラムは、各プレーヤーの番号、名前、および獲得したポイントをリストするテーブルを出力する必要があります。プログラムは、関数名 displayPlayer を使用してテーブルを出力する必要があります。メイン プログラムは、ヘッド ノード ポインターを関数に渡す必要があります。この関数は、プレーヤーの情報を適切な幅のフィールドに 1 行で表示する必要があります (setw を使用)。関数のプロトタイプは void displayPlayer(Player *) です。
私のプログラムは、プレーヤーの数または得点に負の値を受け入れるべきではありません。ユーザーが負の数を入力した場合、プログラムは適切なメッセージを表示し、ユーザーに再度入力を求める必要があります。
#include <iostream>
#include <cctype>
using namespace std;
struct Player
{
char name[16];
int jersey;
int points;
// declare the required members of the structure here
Player *next;
};
void displayPlayer(Player *); // prototype of the display function
int main()
{
Player *headptr;
Player *lastptr;
Player *newnode;
headptr = NULL;
lastptr = NULL;
//declare three pointers of Player type
//one pointer to point to head node; one to point to previous node
//and one to point to new node
do {
Player info;
cout << " Enter name then jersey, points ";
cin >> info.name;
cin >> info.jersey;
cin >> info.points;
newnode->
//dynamically create a new node of Player type and make the new node pointer point to it
//enter data in to the new node (name, jersy no, score)
//set the next field of new node to NULL
if ()
{
//make head node and previous node pointers equal to the new node pointer
} else {
//set the next member of of the previous node eqal to ne node pointer
//make previous node pointer point to the new new node
}
} while(user wants to continue);
// Call displayPlayer function with headnode pointer
}
void displayPlayer(Player *h)
{
while( not end of the list) {
//display node content
} // set h to next node
}