同上一篇,等我熟练了就来补充
#include <iostream>
using namespace std;
struct Node {
int data;
Node *next;
};
typedef Node *LinkList;
void createList(LinkList &L,int n) {
Node *p,*r;
L=new Node;
L->next=NULL;
r=L;
for(int i=1; i<=n; i++) {
p=new Node;
cin>>p->data;
r->next=p;
r=p;
}
r->next=NULL;
}
void printList(LinkList L) {
Node *p;
p=L->next;
while(p) {
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
//要写的也就这一段
void delElem(LinkList &L,int x, int y){
struct Node *p=L;
struct Node *q=L->next;
while(q!=NULL)
{
if(q->data>=x&& q->data<=y)
{
p->next=q->next;//从链表上摘下q所指向的节点
delete q;//释放内存
q=p->next;//q指针指向下一个节点
}
else
{
p=p->next;
q=q->next;
}
}
//美丽可爱的分界线==============================================
int main() {
LinkList L;
int m;
int x,y;
cin>>m;//单链表中元素个数
createList(L,m);//尾插入法创建带头节点的单链表
cin>>x>>y;//要删除的元素值所在区间[x,y],包含x和y
delElem(L,x,y);//删除单链表中x-y之间的数
printList(L);//输出结果单链表中的所有数据
return 0;
}