Question: help so whenever i run this code i get an error can somoene help me please is in c the code #include #include #include int

help so whenever i run this code i get an error can somoene help me please is in c the code

#include #include #include int main()

struct location { int rank, file;//int row,column };

struct piece { /* data */ struct location loc; int id; struct piece* next; };

struct rank /*rows*/ { /* data */ int location;//this location contains the rank number int number_of_pieces; int capacity; struct piece* array; };

struct rankArrayList { /* data */ int cap;//number of rooks struct piece* pieces; struct location size;//here it will store the size of board struct rank* ranks; };

void addPieceToBoard(struct rankArrayList *, struct piece *); void expandBoard(struct rankArrayList *); void cleaBoard(struct rankArraylist *); struct rankArrayList* createBoard(); void addPieceToRank(struct rank*, struct piece*); void expandRank(struct rank*); void cleanRank(struct rank*); struct rank* createRank(); void addPiece(struct piece*, struct piece*); void printAttacks(struct rankArrayList*);

int main() { /* Add code at your will, I will help you if you find any problem; */

return 0; }

void addPieceToBoard(struct rankArrayList * board, struct piece * newPiece) { if(board==NULL) { printf(" \t\tCreating a new Board.\t\t "); board = createBoard(); addPieceToBoard(board, newPiece); } else { if(newPiece == NULL) { printf(" \t\tPiece has no data."); } else { if(newPiece ->loc.rank < board ->size.rank) { expandBoard(board); expandRank(board ->ranks); } if(newPiece ->loc.file < board ->size.file) { board ->size.file *= 2; } addPieceToRank(board ->ranks, newPiece); addPiece(board -> pieces, newPiece); board ->cap ++; } } }

void addPiece(struct piece* pieces, struct piece* newPiece) { struct piece* current; if(pieces -> id > newPiece -> id) { newPiece -> next = pieces; pieces = newPiece; } else { current = pieces; while (current -> next != NULL && current ->next ->id < newPiece ->id) { /* code */ current = current -> next; } newPiece = current -> next; current ->next = newPiece; } }

void expandBoard(struct rankArrayList * board) { board ->size.rank = board ->size.rank * 2; }

void cleaBoard(struct rankArraylist * board) { for(int i = 0; i < (board -> size.rank); i++ ) { cleanRank(board -> (rank+i)); } free(board -> rank); free(board); }

struct rankArrayList* createBoard() { struct rankArrayList* board = (struct rankArrayList*)malloc(sizeof(struct rankArrayList)); printf(" \t\tInitializing new board "); board ->cap = 1; board ->size.file, board->size.rank = 1; board ->ranks = createRank(); return board; }

void addPieceToRank(struct rank* rank, struct piece* newPiece) { if ((rank + newPiece->loc.rank -1) -> location.file == newPiece->loc.file) { /* code */ printf(" \t\tCannot have duplicates "); } else if((rank + newPiece->loc.rank -1)->array->loc.file > newPiece->loc.file) { newPiece -> next = (rank + newPiece->loc.rank -1)->array; (rank + newPiece->loc.rank)->array = newPiece; } else { struct piece* current = (rank + newPiece -> loc.rank -1)->array; while (current -> next != NULL && current -> next -> loc.file < newPiece -> loc.file) { current = current->next; } newPiece->next = current->next; current->next = newPiece; } ((rank + newPiece->loc.rank)->capacity) ++; }

void expandRank(struct rank* rank) { int numberOfRank = 0; struct rank* current = rank; while (1) { /* code */ if((current + numberOfRank) != NULL) { ++numberOfRank; } else break; }

numberOfRank *= 2;

rank = (struct rank*)realloc(rank, sizeof(struct rank)*numberOfRank); } void cleanRank(struct rank* rank) { struct rank* current = rank; int count = 0; while (current != NULL) { /* code */ while (current -> array != NULL) { /* code */ struct piece* temp; temp = current -> array -> next; free(current); current = temp; } ++count; current = rank + count; } } struct rank* createRank() { struct rank* rank= (struct rank*)calloc(1, sizeof(struct rank)); return rank; }

void printAttacks(struct rankArrayList* board) { struct piece* current = board ->pieces; struct piece* temp_p = board ->pieces; while (current != NULL) { struct piece* attackers, *current_attacker; current_attacker = attackers; int num_attackers = 0; while(temp_p != NULL) { /* code */ if (temp_p -> loc.rank == current->loc.rank) if(temp_p -> loc.file != current->loc.file) { /* code */ current_attacker -> next = temp_p; current_attacker = current_attacker -> next; num_attackers ++; }

if (temp_p -> loc.file == current->loc.file) if(temp_p -> loc.rank != current->loc.rank) { /* code */ current_attacker -> next = temp_p; current_attacker = current_attacker -> next; num_attackers ++; }

temp_p = board ->pieces; } printf("%d ",num_attackers); current_attacker = attackers; while (current_attacker != NULL) { printf("%d ", attackers ->id); current_attackers = current_attackers -> next; } current = current ->next; printf(" "); }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!