航空客运订票系统单链表代码
时间: 2024-06-13 11:01:53 浏览: 119
航空订票系统代码
航空客运订票系统需要用到链表来存储乘客信息、航班信息和座位信息等数据。单链表是其中一种常见的链表结构,其代码实现大致分为以下几个部分:
1. 定义节点结构体
```c++
struct ListNode {
int val; // 节点值,可以根据实际需求修改
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(NULL) {} // 构造函数
};
```
2. 创建链表
```c++
ListNode* createList() {
ListNode* head = new ListNode(0); // 头节点不存储数据,只作为链表的起点
ListNode* tail = head; // tail指向最后一个节点,初始时指向head
// 循环输入节点值,以-1作为输入结束的标志
int x;
while (cin >> x && x != -1) {
ListNode* node = new ListNode(x); // 创建新节点
tail->next = node; // 将新节点链接到链表末尾
tail = node; // 将tail指向新节点
}
return head->next; // 返回头节点的下一个节点,即链表的第一个节点
}
```
3. 遍历链表
```c++
void traverseList(ListNode* head) {
ListNode* p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
}
```
4. 插入节点
```c++
void insertNode(ListNode* head, int pos, int val) {
ListNode* p = head;
int i = 0;
while (p != NULL && i < pos - 1) {
p = p->next;
i++;
}
if (p == NULL || i > pos - 1) { // 位置不合法
cout << "插入位置不合法" << endl;
return;
}
ListNode* node = new ListNode(val);
node->next = p->next;
p->next = node;
}
```
5. 删除节点
```c++
void deleteNode(ListNode* head, int pos) {
ListNode* p = head;
int i = 0;
while (p != NULL && i < pos - 1) {
p = p->next;
i++;
}
if (p == NULL || p->next == NULL || i > pos - 1) { // 位置不合法
cout << "删除位置不合法" << endl;
return;
}
ListNode* q = p->next;
p->next = q->next;
delete q;
}
```
以上是单链表的基本操作代码实现,你可以根据实际需求进行修改和扩展。例如,在航空客运订票系统中,你需要自定义节点结构体来存储航班、座位和乘客等信息,并在插入和删除节点时更新相应的数据。同时,在遍历链表时,你需要输出每个节点所包含的数据信息。
阅读全文