链表,结构体,指针,CG作业,删除单链表中某区间的数
同上一篇,等我熟练了就来补充
#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; }