第三週專案4 順序表應用

2021-07-22 16:21:58 字數 3284 閱讀 5295

問題**:

/*    

*煙台大學計算計控制與工程學院

*作 者:劉倩

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

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

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進行交換,最後將刪除後的資訊重新排序輸出,這是刪除數字

奇偶數排列則是從右到左和從左到右對奇偶數分別排列,最後當i學習心得:

雖然最後做完了,但是還是參考了很多學姐的,不過我會多練習,直到自己學會的。

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