用户:
happy_chicken查看:1 回复:2 评论:1 创建时间:2023-06-04T10:35:31
//自制链表
#include <bits/stdc++.h>
using namespace std;
struct node {
int data;
node *next;
};
node *head, *tail, *p;
void erase(int key) {
node *pre;
p = head;
pre = p;
while (p->next != NULL) {
if (p->data == key) {
pre->next = p->next;
delete p;
p = pre->next;
} else {
pre = p;
p = p->next;
}
}
if (p->data == key) {
delete p;
pre->next = NULL;
}
}
void inserd(int pos, int key) {
node *new_p, *pre;
p = head;
pre = p;
int k = 0;
while (p->next != NULL) {
p = p->next;
k++;
if (k == pos) {
new_p = new node;
new_p->data = key;
new_p->next = p;
pre->next = new_p;
break;
} else
pre = p;
}
if (k < pos) {
new_p = new node;
new_p->data = key;
new_p->next = NULL;
p->next = new_p;
}
}
int main() {
int x;
head = new node ;
tail = head;
cin >> x;
while (x != -1) {
p = new node;
p->data = x;
tail->next = p;
tail = p;
tail->next = NULL;
cin >> x;
}
int erase_p, inserd_p;
cout << "erase:";
cin >> erase_p;
erase(erase_p);
cout << "inserd:";
cin >> erase_p >> inserd_p;
inserd(erase_p, inserd_p);
if (head->next != NULL) {
p = head->next;
while (p->next != NULL) {
cout << p->data << '\n';
p = p->next;
}
cout << p->data ;
}
return 0;
}