南郵資料結構實驗1.1:順序表的相關操作
題目:參照程式2.1~2.7,編寫程式碼,完成順序表的初始化、查詢、插入、刪除、輸出、撤銷等操作。
部分程式碼:
順序表的結構體定義:
typedef struct {
int n; //順序表的長度
int maxLength; //順序表的最大長度
ElemType *element; //存放動態分配一維陣列首地址
}SeqList;
插入函式程式碼:
//初始化插入
Status Insert(SeqList *L, int i, ElemType x) {
int j;
if (i<-1 || i>L->n - 1) //判斷下標i是否越界
return ERROR;
if (L->n == L->maxLength) //判斷順序表儲存空間是否已滿
return ERROR;
for (j = L->n - 1; j > i; j--) {
L->element[j + 1] = L->element[j]; //從後往前逐個後移元素
}
L->element[i + 1] = x; //將新元素放入下標為i+1的位置
L -> n = L->n + 1; //長度+1
return OK;
}
刪除函式程式碼:
//順序表的刪除
Status Delete(SeqList *L, int i){
int j;
if(i<0||i>L->n-1){ //下標i是否越界
return ERROR;
}
if(!L->n){ //順序表是否為空
return ERROR;
}
for(j=i+1;j<L->n;j++){
L->element[j-1]=L->element[j]; //從前往後逐個前移元素
}
L->n--; //表長減1
return OK;
}
完整程式碼:
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int Status;
typedef struct {
int n; //順序表的長度
int maxLength; //順序表的最大長度
ElemType *element; //存放動態分配一維陣列首地址
}SeqList;
//順序表初始化
Status Init(SeqList *L, int mSize) {
L->maxLength = mSize;
L->n = 0;
L->element = (ElemType*)malloc(sizeof(ElemType)*mSize);
if(!L->element)
return OK;
}
//順序表的查詢
Status Find(SeqList L,int i,ElemType *x){
if(i<0||i>L.n-1){
return ERROR; //判斷元素下標i是否越界
}
*x=L.element[i]; //取出element[i]的值通過引數x返回
return OK;
}
//初始化插入
Status Insert(SeqList *L, int i, ElemType x) {
int j;
if (i<-1 || i>L->n - 1) //判斷下標i是否越界
return ERROR;
if (L->n == L->maxLength) //判斷順序表儲存空間是否已滿
return ERROR;
for (j = L->n - 1; j > i; j--) {
L->element[j + 1] = L->element[j]; //從後往前逐個後移元素
}
L->element[i + 1] = x; //將新元素放入下標為i+1的位置
L -> n = L->n + 1; //長度+1
return OK;
}
//順序表的刪除
Status Delete(SeqList *L, int i){
int j;
if(i<0||i>L->n-1){ //下標i是否越界
return ERROR;
}
if(!L->n){ //順序表是否為空
return ERROR;
}
for(j=i+1;j<L->n;j++){
L->element[j-1]=L->element[j]; //從前往後逐個前移元素
}
L->n--; //表長減1
return OK;
}
//順序表輸出
int Output(SeqList L) {
int i;
if (!L.n)
return ERROR; //判斷順序表是否為空
for (i = 0; i <= L.n - 1; i++)
printf("%d ", L.element[i]); //從前往後逐個輸出元素
return OK;
}
//順序表的撤銷
void Destroy(SeqList *L){
(*L).n=0;
(*L).maxLength=0;
free((*L).element);
}
void main()
{
int i,x;
SeqList list;
Init(&list, 10); //對線性表初始化
for (i = 0; i < 9; i++) {
Insert(&list, i - 1, i); //將0-8插入到順序表中
}
Output(list);
printf("\n");
Delete(&list,0); //刪除0
Output(list);
Find(list,2,&x); //查詢下標為2的元素並輸出
printf("\nthe value is:");
printf("%d",x);
Destroy(&list);
}
實驗結果:
版權宣告:本文為博主原創文章,未經博主允許不得轉載。
相關文章
- 南郵資料結構實驗1.1 順序表的操作資料結構
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- 資料結構c語言實現順序表基本操作資料結構C語言
- 【資料結構】實現順序表(c++)資料結構C++
- 資料結構 - 線性表 - 順序表資料結構
- 資料結構:線性表的順序實現2.2資料結構
- 【資料結構】實現順序表(c語言)資料結構C語言
- 考研資料結構-線性表-順序表資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 基礎資料結構(一)---(最全)定長順序表的實現資料結構
- 具體實現程式碼@資料結構探險——順序表資料結構
- 【資料結構】順序棧的實現(c++)資料結構C++
- 實驗二:順序表的基本操作實現及其應用
- 資料結構與演算法 | 線性表 —— 順序表資料結構演算法
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 資料結構_順序表_順序表的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- python演算法與資料結構-順序表(37)Python演算法資料結構
- 資料結構:順序結構和鏈式結構的資料型別定義資料結構資料型別
- 資料結構 順序棧(c語言)資料結構C語言
- 順序結構
- 資料結構練習題(順序表和單連結串列)C++資料結構C++
- 6-C/C++實現資料結構連結串列相關操作C++資料結構
- c語言資料結構,你可能還不知道的順序表C語言資料結構
- 11 線性表的順序儲存結構
- 順序表有序插入資料
- 資料結構:二叉查詢樹的相關操作資料結構
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 資料結構實驗三:線性表綜合實驗資料結構
- 線性表之順序儲存結構
- 順序表的實現
- 南郵離散實驗三(JAVA)Java
- 自學 資料結構四月二十二日_線性結構之順序表資料結構
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 資料結構實驗5、鏈佇列的基本操作資料結構佇列
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- 資料結構相關知識資料結構