链表,结构体,指针,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; }

猜你喜欢

转载自www.cnblogs.com/ahijing/p/12544101.html