資料結構 線性表的順序表示

2021-09-24 13:37:20 字數 3305 閱讀 4083

1.相關概念

2.順序表的型別定義

//--------順序表的儲存結構----

#define max 100 //順序表可能達到的最大長度

typedef struct sq

sqlist;

/*elemtype是乙個抽象資料型別 ,可以是int,float,double等或者是自定義的資料型別。

在實際使用是可以使用int,float等來代替;

*/

​​​​​3.線性表的重要基本操作3.1順序表的初始化演算法描述

status initsqlist_sq(sqlist &l)

3.2 順序表的取值演算法描述

status getelem(sqlist l, int i, book &e)

3.3順序表的查詢演算法描述

int locationelem_sq(sqlist l,elemtype e)

3..5 順序表的刪除演算法描述:

status listdelete_sq(sqlist &l, int i) 

4.演算法分析

5.總結

順序表的優缺點:

**實現:

#includeusing namespace std;

#define max 100

typedef struct sq

sqlist;

// 初始化表

int initsqlist(sqlist &l)

else }

//判斷表是否為空

int listempty(sqlist l)

else if (l.length == 0) }

//計算表長

int listlength(sqlist l)

// 輸入操作

void input(sqlist &l)

else

}printf("輸入結束!\n");

}// 輸出線性表中的所有值

void output(sqlist l)

printf("%d\n", l.elem[l.length - 1]);

}//查詢指定位置的元素的值

void selectbyno(sqlist &l, int location)

else if (!listempty(l))

else }

// 查詢某個元素在表中的位置

void selectbyvalue(sqlist l, int value)

else

} }}

//查詢某個值的前驅

void priorelem(sqlist l, int value)

else

}} if (count == 0) }

// 查詢某個值的後繼

void nextelem(sqlist l, int value)

else

}} if (count == 0) }

/*插入操作

在l中第i個位置之前插入元素value

插入後,表長加1,第i及以後的元素位置向後移動1個

*/void listinsert(sqlist &l, int location, int value)

else

l.elem[location - 1] = value;

l.length++;

printf("插入成功!\n"); }}

/*刪除操作

刪除指定位置的元素,表長減1

location及其後的元素的位置向前移動1個

*/void listdelete(sqlist &l, int location)

else

l.length--;

printf("刪除成功!\n"); }}

int main()

else

break;

case 2:

input(l);

break;

case 3:

output(l);

break;

case 4:

int location, value;

printf("請輸入插入的位置和插入元素的數值:\n");

scanf("%d %d", &location, &value);

listinsert(l, location, value);

printf("插入後的表是:\n");

output(l);

break;

case 5:

printf("請輸入要刪除的元素在表中的位置:\n");

int location1;

scanf("%d", &location1);

listdelete(l, location1);

printf("刪除後的表為:\n");

output(l);

break;

case 6:

printf("1.查詢指定元素的前驅\n");

printf("2.查詢指定元素的後繼\n");

printf("3.按序號查詢某個元素的值\n");

printf("4.按值查詢某個元素的位置\n");

printf("請選擇:\n");

int choose;

scanf("%d", &choose);

switch (choose)

break;

case 0:

printf("退出成功!\n");

break;

} }return 0;

}

資料結構之線性表(順序表示)

順序表定義 define maxsize 50 typedef struct sqlist 陣列動態分配 define maxsize 50 typedef struct sqlist 動態分配的語句 c l.data elemtype malloc sizeof elemtype initsize...

資料結構 線性表的順序表示(6 10)

6 從有序表中刪除所有其值重複的元素,使表中所有元素均不同。演算法思想 相同元素一定在連續的位置上,所以如果不同則插入到前面所有非重複的有序表的最後。void del all du sqlist l delete all duplicate else l.data i count l.data i ...

資料結構(2) 線性表的順序表示

順序表基本操作 插入操作 最壞情況o n 最好情況o 1 平均情況o n 刪除操作 最壞情況o n 最好情況o 1 平均情況o n 按值查詢 最壞情況o n 最好情況o 1 平均情況o n 單鏈表操作 頭插法建立 插入時間o 1 設煉表長度n,總時間複雜度o n 尾插法建立 同頭插 按序號查詢結點值...