我已经尝试了三天。我要做的是创建一个足球运动员的链接列表。每个足球运动员都有以下信息。
球员姓名(最多 15 个字符) 球员球衣号码(整数) 球员得分(整数)
我必须定义一个名为 Player 的结构来存储有关足球运动员的信息。除了上述数据成员之外,该结构还应该有另一个指针成员,可以指向另一个 Player 类型的结构。要创建链表,请遵循以下算法:
声明头指针和前一个节点指针并将它们设置为 NULL。
动态创建一个 Player 结构,如果这是第一个节点,则使 head 和 previous 指针指向新创建的结构。
要求用户输入玩家信息并将其存储在结构中。将指针成员设置为 NULL。
如果不是第一个节点,则将前一个节点指向的节点的指针成员指向新节点。
询问用户是否要继续。
- 如果是,如果没有完成链表创建,则转到步骤 2。
创建链接列表后,我的程序应该打印一个表格,列出每个玩家的号码、姓名和得分。程序必须使用函数名 displayPlayer 来打印表格。主程序应该将头节点指针传递给函数。该函数应在适当宽度的字段中以单行显示玩家的信息(使用 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
}