当前位置: 首页 > 工具软件 > Mink > 使用案例 >

请你设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同或不同)。

贺彬
2023-12-01
#include <iostream>
using namespace std;

typedef struct lnode
{
    int data;
    struct lnode *next;
} lnode,*LinkList;

int CreateList(LinkList &L,int n)
{
    lnode *p,*r;
    L=new lnode;
    L->next=NULL;
    r=L;
    for(int i=0; i<n; i++)
    {
        p=new lnode;
        cin>>p->data;
        p->next=NULL;
        r->next=p;
        r=p;
    }
    return 0;
}

void  Delete(LinkList &LA,int mink,int maxk)
{
    lnode *pa,*p;
    pa=LA->next;
    p=LA;
    while(pa)
    {
        if((pa->data<=mink)||(pa->data>=maxk))
        {
            pa=pa->next;
            p=p->next;

        }
        else
        {
            pa=pa->next;
            p->next=pa;
        }
    }

}

void display(LinkList L)
{
    lnode *p;
    p=L->next;
    while(p)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
}

int main()
{
    LinkList LA;
    int n;
    cout<<"请输入LA的长度:";
    cin>>n;
    cout<<"请输入LA的元素:";
    CreateList(LA,n);
    int mink,maxk;
    cout<<"请输入mink和maxk的值:";
    cin>>mink>>maxk;
    Delete(LA, mink, maxk);
    display(LA);
    return 0;
}

 类似资料: