第三週 專案4 順序表應用

2021-08-10 14:34:52 字數 3120 閱讀 4184

/*  

*all rights reservrd.      

*版本號:v1.0      

*問題描述:定義乙個採用順序結構儲存的線性表,設計演算法完成下面的工作: 

1、刪除元素在[x, y]之間的所有元素,要求演算法的時間複雜度為o(n),空間複雜度為o(1); 

2、將所在奇數移到所有偶數的前面,要求演算法的時間複雜度為o(n),空間複雜度為o(1)。

一、list.h

#ifndef list_h_included

#define list_h_included

#define maxsize 50

typedef int elemtype;

typedef struct

sqlist;

void createlist(sqlist *&l, elemtype a, int n);//óãêý×é´´½¨ïßðô±í

void initlist(sqlist *&l);//³õê¼»¯ïßðô±íinitlist(l)

void destroylist(sqlist *&l);//ïú»ùïßðô±ídestroylist(l)

bool listempty(sqlist *l);//åð¶¨êç·ñõ±ílistempty(l)

int listlength(sqlist *l);//çóïßðô±íµä³¤¶èlistlength(l)

void displist(sqlist *l);//êä³öïßðô±ídisplist(l)

bool getelem(sqlist *l,int i,elemtype &e);//çó䳸öêý¾ýôªëøöµgetelem(l,i,e)

int locateelem(sqlist *l, elemtype e);//°´ôªëøöµ²éõòlocateelem(l,e)

bool listinsert(sqlist *&l,int i,elemtype e);//²åèëêý¾ýôªëølistinsert(l,i,e)

bool listdelete(sqlist *&l,int i,elemtype &e);//é¾³ýêý¾ýôªëølistdelete(l,i,e)#endif // list_h_included

#endif

二、list.cpp

#include #include #include "list.h"

//óãêý×é´´½¨ïßðô±í

void createlist(sqlist *&l, elemtype a, int n)

//³õê¼»¯ïßðô±íinitlist(l)

void initlist(sqlist *&l) //òýóãðíö¸õë

//ïú»ùïßðô±ídestroylist(l)

void destroylist(sqlist *&l)

//åð¶¨êç·ñõ±ílistempty(l)

bool listempty(sqlist *l)

//çóïßðô±íµä³¤¶èlistlength(l)

int listlength(sqlist *l)

//êä³öïßðô±ídisplist(l)

void displist(sqlist *l)

//çó䳸öêý¾ýôªëøöµgetelem(l,i,e)

bool getelem(sqlist *l,int i,elemtype &e)

//°´ôªëøöµ²éõòlocateelem(l,e)

int locateelem(sqlist *l, elemtype e)

//²åèëêý¾ýôªëølistinsert(l,i,e)

bool listinsert(sqlist *&l,int i,elemtype e)

//é¾³ýêý¾ýôªëølistdelete(l,i,e)

bool listdelete(sqlist *&l,int i,elemtype &e)

三、main.cpp

1.刪除元素在[x, y]之間的所有元素,要求演算法的時間複雜度為o(n),空間複雜度為o(1);

#include "list.h"

#include //刪除線性表中,元素值在x到y之間的元素

void delx2y(sqlist *&l, elemtype x, elemtype y)

for (i=0; ilength; i++)

if (l->data[i]data[i]>y ) //複製不在[x, y]之間的元素

l->length=k;

}//用main寫測試**

int main()

; createlist(sq, a, 10);

printf("刪除前 ");

displist(sq);

delx2y(sq, 4, 7);

printf("刪除後 ");

displist(sq);

return 0;

}

測試截圖:

2.將所在奇數移到所有偶數的前面,要求演算法的時間複雜度為o(n),空間複雜度為o(1)。

#include "list.h"

#include //移動結束後,奇數居左,偶數居右

void move(sqlist *&l)

} //待迴圈上去後,繼續查詢,並在必要時交換

}//用main寫測試**

int main()

; createlist(sq, a, 10);

printf("操作前 ");

displist(sq);

move(sq);

printf("操作後 ");

displist(sq);

return 0;

}

測試截圖:

(第三週專案4)順序表應用

1.include include 動態儲存分配函式標頭檔案 define maxsize 50 必要的巨集定義 typedef int elemtype typedef struct sqlist elemtype e void createlist sqlist l,elemtype a,int...

第三週 專案4 順序表應用

檔名稱 cpp.cpp 作者 王超 完成日期 2015.9.18 問題描述 順序表應用 include include define maxsize 50 typedef int elemtype typedef struct sqlist void createlist sqlist l,elem...

第三週專案4順序表應用

檔名稱 專案4 1 cpp 作 者 彭子竹 完成日期 2015年9月25日 版 本 號 v1.0 問題描述 刪除元素在 x,y 之間的所有元素,要求演算法的時間複雜度為o n 空間複雜度為o 1 輸入描述 無 程式輸出 輸出調整後的線性表 標頭檔案 ifndef list h included de...