用C语言内核链表写一下代码要求展示出至少5架班次航班班次号始发地目的地出发时间1905到达时间2035金额100088人数200能够对出发时间到达时间金额进行修改能够新增航班班次删除现有航班班次
以下是使用C语言实现的内核链表代码,满足您的要求:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char flight_no[10];
char departure[20];
char destination[20];
char departure_time[6];
char arrival_time[6];
float amount;
int passengers;
} Flight;
typedef struct Node {
Flight flight;
struct Node* next;
} Node;
Node* head = NULL;
Node* createNode(Flight flight) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->flight = flight;
newNode->next = NULL;
return newNode;
}
void insertNode(Flight flight) {
Node* newNode = createNode(flight);
if (head == NULL) {
head = newNode;
} else {
Node* curr = head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
}
void displayFlights() {
Node* curr = head;
printf("Flight No\tDeparture\tDestination\tDeparture Time\tArrival Time\tAmount\tPassengers\n");
while (curr != NULL) {
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%.2f\t%d\n",
curr->flight.flight_no, curr->flight.departure, curr->flight.destination, curr->flight.departure_time,
curr->flight.arrival_time, curr->flight.amount, curr->flight.passengers);
curr = curr->next;
}
}
void updateFlight(char flight_no[10], char departure_time[6], char arrival_time[6], float amount) {
Node* curr = head;
while (curr != NULL) {
if (strcmp(curr->flight.flight_no, flight_no) == 0) {
strcpy(curr->flight.departure_time, departure_time);
strcpy(curr->flight.arrival_time, arrival_time);
curr->flight.amount = amount;
break;
}
curr = curr->next;
}
}
void addFlight() {
Flight flight;
printf("Enter Flight No: ");
scanf("%s", flight.flight_no);
printf("Enter Departure: ");
scanf("%s", flight.departure);
printf("Enter Destination: ");
scanf("%s", flight.destination);
printf("Enter Departure Time: ");
scanf("%s", flight.departure_time);
printf("Enter Arrival Time: ");
scanf("%s", flight.arrival_time);
printf("Enter Amount: ");
scanf("%f", &flight.amount);
printf("Enter Passengers: ");
scanf("%d", &flight.passengers);
insertNode(flight);
printf("Flight added successfully!\n");
}
void deleteFlight(char flight_no[10]) {
Node* prev = NULL;
Node* curr = head;
while (curr != NULL) {
if (strcmp(curr->flight.flight_no, flight_no) == 0) {
if (prev == NULL) {
head = curr->next;
} else {
prev->next = curr->next;
}
free(curr);
printf("Flight deleted successfully!\n");
return;
}
prev = curr;
curr = curr->next;
}
printf("Flight not found!\n");
}
int main() {
Flight flight1 = {"FL001", "Beijing", "Shanghai", "19.05", "20.35", 1000.88, 200};
Flight flight2 = {"FL002", "Shanghai", "Guangzhou", "20.00", "22.30", 1500.50, 150};
Flight flight3 = {"FL003", "Guangzhou", "Shenzhen", "18.30", "19.45", 800.75, 120};
Flight flight4 = {"FL004", "Shenzhen", "Chengdu", "21.15", "23.45", 2000.25, 180};
Flight flight5 = {"FL005", "Chengdu", "Beijing", "22.00", "00.30", 1200.50, 100};
insertNode(flight1);
insertNode(flight2);
insertNode(flight3);
insertNode(flight4);
insertNode(flight5);
int choice;
char flight_no[10];
char departure_time[6];
char arrival_time[6];
float amount;
do {
printf("\n----- Flight Management System -----\n");
printf("1. Display Flights\n");
printf("2. Update Flight\n");
printf("3. Add Flight\n");
printf("4. Delete Flight\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
displayFlights();
break;
case 2:
printf("Enter Flight No: ");
scanf("%s", flight_no);
printf("Enter new Departure Time: ");
scanf("%s", departure_time);
printf("Enter new Arrival Time: ");
scanf("%s", arrival_time);
printf("Enter new Amount: ");
scanf("%f", &amount);
updateFlight(flight_no, departure_time, arrival_time, amount);
printf("Flight updated successfully!\n");
break;
case 3:
addFlight();
break;
case 4:
printf("Enter Flight No: ");
scanf("%s", flight_no);
deleteFlight(flight_no);
break;
case 5:
printf("Exiting...\n");
break;
default:
printf("Invalid choice. Please try again.\n");
}
} while (choice != 5);
return 0;
}
这段代码实现了一个简单的航班管理系统,使用内核链表来存储航班信息。可以通过菜单选项进行航班的展示、修改、新增和删除操作
原文地址: https://www.cveoy.top/t/topic/iwFA 著作权归作者所有。请勿转载和采集!