下列操作:
从已建好的链表中删除第 i 个数,然后在输出删除之后的链表,找到第 i 个数的前驱和第 i 个数的位置,让第 i 个数的前驱指向第个 i 数的后驱,删除第 i 个数;
#include <iostream>
using namespace std;
struct list {
int data;
list *next;
};
// 初始化链表,输入数据;
void create(list *p) {
int i = 1;
list *q;
while (i <= 6) {
cin >> p ->data ;
q = new list();
q ->next = p ->next ;
p ->next = q;
p = q;
++i;
}
}
从链表中删除第 i 个数;
void del(list *p, int i) {
int j = 1;
list *q;
q = p ->next ;
while (p ->next != NULL && j < i - 1) {
p = p ->next ;
q = q ->next ;
++j;
}
if (j != i - 1)
cout << "i tai da le \n";
else {
p ->next = q ->next ;
delete q;
}
}
int main() {
list *head, *p;
p = head = new list();
p ->next = NULL;
create(p);
p = head;
// 输出数据;
while (p ->next != NULL) {
cout << p ->data << "\t";
p = p ->next ;
}
cout << endl;
p = head;
// 删除链表中第个 i 数;
del(p, 4);
// 输出删除之后的链表;
p = head;
while (p ->next != NULL) {
cout << p ->data << "\t";
p = p ->next ;
}
cout << endl;
return 0;
}