链表的删除操作

来源:互联网 发布:北京php程序员工资 编辑:程序博客网 时间:2024/06/01 09:30
下列操作:       从已建好的链表中删除第 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;}