已知長度為n的線性表A採用順序儲存結構,請寫一個時間複雜度為O(n)、空間複雜度為O(1)的演算法,該演算法可刪除線性表中所有值為item的資料元素。
阿新 • • 發佈:2018-10-31
語言:C++
#include <iostream> using namespace std; typedef int ElemType; //定義 #define MAXSIZE 100 typedef struct {ElemType *elem; int length;}SqList; //建立 void CreateList(SqList &L) { int i; L.elem=new ElemType[MAXSIZE]; if(!L.elem) cout<<"建立失敗!"<<endl; cout<<"請輸入線性表的長度,不能大於"<<MAXSIZE<<':'<<endl; cin>>L.length; cout<<"請依次輸入表中元素:"<<endl; for(i=0;i<L.length;i++) cin>>L.elem[i]; cout<<"建立完成!"<<endl; } //輸出表 void display(SqList L) { int i; cout<<'['; for(i=0;i<L.length;i++) {if (i==L.length-1)cout<<L.elem[i]; else cout<<L.elem[i]<<',';} cout<<']'<<endl; } void ChooseList_L(SqList &L,int item) { int i=0;int j=0;int k;int count=0; for(k=0;k<L.length;k++) { if(L.elem[k]!=item) { L.elem[j]=L.elem[i]; i++; j++; } else { i++; count++; } } L.length-=count; } int main() { SqList L;int item; CreateList(L); cout<<"當前線性表為:"<<endl; display(L); cout<<"刪除表中所有值為item的資料元素,請輸入item:"<<endl; cin>>item; ChooseList_L(L,item); cout<<"選擇刪除後線性表為:"<<endl; display(L); return 0; }