設計一個演算法,刪除遞增有序連結串列中值大於mink且小於maxk的所有元素(mink和maxk是給定的兩個引數,其值可以和表中的元素相同,也可以不同)。
阿新 • • 發佈:2018-10-31
語言:C++
#include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(LinkList &L,int n) { LNode *p,*r;int i; L=new LNode; L->next=NULL; r=L; for(i=0;i<n;i++) { p=new LNode; cin>>p->data; p->next=NULL;r->next=p; r=p; } return 0; } //輸出連結串列 void display(LinkList L) { LNode *p; p=L->next; cout<<"("; while(p) {cout<<p->data<<" "; p=p->next;} cout<<")"<<endl; } //選擇刪除 int ChooseList_L(LinkList &LA,int mink,int maxk) { LNode *pa;LNode *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; } } } int main() { LinkList LA;int n; int mink;int maxk; cout<<"請輸入需要建立單鏈表的長度:"<<endl; cin>>n; cout<<"請依次輸入需要存入的資料(尾插法&&遞增):"<<endl; CreateList (LA,n); cout<<"當前單鏈表A為:"; display(LA); cout<<"刪除連結串列中值大於mink且小於maxk的所有元素,請依次輸入mink和maxk:"<<endl; cin>>mink; cin>>maxk; ChooseList_L(LA,mink,maxk); cout<<"選擇刪除後的單鏈表為:"; display(LA); return 0; }