第三週專案4 順序表的應用

2021-07-22 18:15:02 字數 3502 閱讀 5296

問題描述及**
/*      

*煙台大學計控學院

*作 者:張雯婧

*完成日期:2023年9月15日

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

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

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

*/

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

(1) list.h的**

#include#include#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)

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

(2)list.cpp中的**
#include"list.h"  

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;

}

//用陣列建立線性表

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)

(3)main.cpp
#include"list.h"  

int main()

; createlist(sq, a, 10);

printf("刪除前 ");

displist(sq);

delx2y(sq, 4, 7);

printf("刪除後 ");

displist(sq);

return 0;

} 執行結果:

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

(1)move.cpp中的**

#include"list.h"  

void move(sqlist *&l)

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

}

(2)main.cpp

#include"list.h" 

int main() 

;      createlist(sq, a, 10); 

printf("操作前 "); 

displist(sq);   

move(sq);   

printf("操作後 "); 

displist(sq); 

return 0; 

執行結果:

知識點總結:
利用多檔案組織建立新變數將x與y進行交換,最後將刪除後的資訊重新排序輸出;
通過從左到右和從右到左分別實現對奇數和偶數的排序。
學習心得:
這兩個程式雖然看懂了,但如果讓我自己敲**的話仍有好多困難,因此在今後的學習中要多加練習,使自己更快的適應自己敲**的樂趣。

(第三週專案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...