问题:
算法1:由于是顺序表进行删除要进行大量移动,时间复杂度比较大,所以选算法2较好。
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}Sqlist;
bool Createlist(Sqlist &L,int n);//创建顺序表
void Input(Sqlist &L);//给顺序表赋值
void Output(Sqlist &L);//给顺序表输出
bool LocateElem(Sqlist L,ElemType e);//在新的顺序表中查找是否有这个值
void DeleteElem(Sqlist La,Sqlist &Lb);//删除多余元素(通过建立新表进行往里放)
int main(){
Sqlist La,Lb;
int n=10;
Createlist(La,n);
Input(La);
Output(La);
DeleteElem(La,Lb);
Output(Lb);
}
bool Createlist(Sqlist &L,int n){
L.elem=(ElemType *)malloc(n*sizeof(ElemType));
if(!L.elem) return false;//内存分配失败
L.length=0;
L.listsize=n;
return true;
}
void Input(Sqlist &L){
int n;
ElemType elem;
scanf("%d",&n);
L.length=n;//记录实长(很关键)
for(int i=0;i<n;i++){
scanf("%d",&am