链表的删除操作

下列操作:

       从已建好的链表中删除第 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;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值