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 尾插法建立 同頭插 按序號查詢結點值...