3. 编程实现链表基本操作,并自定义函数实现以下功能 (1)建立链表A和B,输入用空格隔开,-1结束。 (2)求2个链表的差A-B。具体做法是,对于链表A中的每个元素e,在链表B中进行查找,若存在与e相同的元素,则从A中将其删除。 (3)输出链表中的元素 (4)释放链表所占内存空间。 结构体定义为: typedef struct LST { int num; struct LST *next; } LST; 运行结果示例: 请输入链表数据(整型)并以空格空开,以-1为最后一个数,回车结尾: 1 2 3 4 -1 请输入链表数据(整型)并以空格空开,以-1为最后一个数,回车结尾: 1 6 7 -1 输出A链表中删除后的结点信息: 2 3 4 输入提示:"请输入链表数据(整型)并以空格空开,以-1为最后一个数,回车结尾:\n" 输入格式:"%d" 输入提示:"请输入链表数据(整型)并以空格空开,以-1为最后一个数,回车结尾:\n" 输入格式:"%d" 输出提示:"输出A链表中删除后的结点信息:\n" 输出格式:"%4d"
时间: 2024-02-22 10:56:40 浏览: 83
实现链表基本操作的代码如下:
```c++
#include <iostream>
using namespace std;
// 链表结点
typedef struct LST {
int num;
struct LST* next;
} LST;
// 在链表尾部插入一个结点
void insert(LST*& head, int num) {
LST* newNode = new LST;
newNode->num = num;
newNode->next = NULL;
if (!head) {
head = newNode;
} else {
LST* cur = head;
while (cur->next) {
cur = cur->next;
}
cur->next = newNode;
}
}
// 释放链表所占内存空间
void clear(LST*& head) {
LST* cur = head;
while (cur) {
LST* tmp = cur;
cur = cur->next;
delete tmp;
}
head = NULL;
}
// 输出链表中的元素
void printList(LST* head) {
LST* cur = head;
while (cur) {
cout << cur->num << " ";
cur = cur->next;
}
cout << endl;
}
// 求2个链表的差A-B
void difference(LST*& A, LST* B) {
if (!A || !B) {
return;
}
LST* curA = A;
LST* preA = NULL;
while (curA) {
LST* curB = B;
bool found = false;
while (curB) {
if (curB->num == curA->num) {
found = true;
break;
}
curB = curB->next;
}
if (found) {
if (!preA) {
A = curA->next;
} else {
preA->next = curA->next;
}
LST* tmp = curA;
curA = curA->next;
delete tmp;
} else {
preA = curA;
curA = curA->next;
}
}
}
int main() {
// 建立链表A
cout << "请输入链表A中的元素,用空格隔开,-1结束:" << endl;
LST* A = NULL;
int num;
cin >> num;
while (num != -1) {
insert(A, num);
cin >> num;
}
// 建立链表B
cout << "请输入链表B中的元素,用空格隔开,-1结束:" << endl;
LST* B = NULL;
cin >> num;
while (num != -1) {
insert(B, num);
cin >> num;
}
// 求2个链表的差A-B
difference(A, B);
// 输出链表A中的元素
cout << "输出A链表中删除后的结点信息:" << endl;
printList(A);
// 释放链表所占内存空间
clear(A);
clear(B);
return 0;
}
```
使用示例:
```
请输入链表A中的元素,用空格隔开,-1结束:
1 2 3 4 -1
请输入链表B中的元素,用空格隔开,-1结束:
1 6 7 -1
输出A链表中删除后的结点信息:
2 3 4
```
阅读全文