資料結構 實驗1 順序表

2021-10-01 03:03:55 字數 3701 閱讀 7603

【問題描述】

設計乙個順序表操作演示程式。

【基本要求】

順序表操作演示程式提供乙個使用者介面,可演示的基本功能包括:

(1)初始化順序表;

(2)輸入並建立順序表;

(3)輸出順序表中的元素;

(4)在順序表指定位置插入元素;

(5)在順序表指定元素之前插入元素;

(6)刪除順序表指定位置的元素;

(7)刪除順序表指定元素之前的元素;

(8)刪除順序表所有指定值的元素。

**實現:

#include

#include

#include

#include

#define ok 1

#define false 0

#define true 1

#define error 0

#define infeasible -1

#define overflow -2

#define list_init_size 100

#define listincrement 10

typedef

int status;

typedef

int elemtype;

typedef

struct

sqlist;

status init

(sqlist &l)

//初始化順序表

l.length=0;

l.size=list_init_size;

printf

("init successful!\n");

//分配成功

return ok;

}status insert

(sqlist &l,

int i,elemtype e)

//在i位置插入資料

elemtype *newbase;

if(l.length>=l.size)

//順序表長度不夠

l.elem=newbase;

l.size+

=listincrement;

} elemtype *p,

*q; q=

&(l.elem[i-1]

);for(p=

&(l.elem[l.length-1]

);p>=q;

--p)

//資料的移動便於在給定位置的插入

*q=e;

//在給定位置放入資料

l.length++

;//表的長度加1

return ok;

}status tinsert

(sqlist &l,elemtype x,elemtype e,

int flag)

//在某元素前後插入資料

l.elem=newbase;

l.size+

=listincrement;

} elemtype *p,

*q;int i=0;

int t=0;

int k;

while

(ielse

//等於要被插入某元素的值

*q=e;

l.length++;}

else

*(q+1)

=e; l.length++;}

break;}

}if(t==1)

else

return ok;

}status locatedelete

(sqlist &l,

int i,elemtype &e)

//刪除i位置的資料

if(i<

1||i>l.length)

//位置不合理

elemtype *p,

*q; p=

&l.elem[i-1]

; e=

*p;//記錄被刪除的值

q=l.elem+l.length-1;

for(

++p;p<=q;

++p)

//資料的移動

l.length--

;//長度減1

return ok;

}status tlocatedelete

(sqlist &l,elemtype x,elemtype &e)

elemtype *p,

*q;int i=0;

while

(ielse

else

l.length--

; t=1;

break;}

}}if(t==1)

else

return ok;

}status length

(sqlist l)

status clear

(sqlist &l)

//清空表

status delete

(sqlist &l,elemtype e,

int flag)

//定值刪除

else

//等於要刪除的值

l.length--

; t=1;

//01判斷是否是只刪除乙個值,0就break,1就繼續直到刪除所有值為e的值

if(flag==0)

}}if(t==1)

else

return ok;

}status shuchu

(sqlist l)

//表元素的輸出

}printf

("\n");

return ok;

}status charu

(sqlist &l)

//實現幾個不同的插入

else

}status shanchu

(sqlist &l)

//實現幾個不同的刪除操作

else

if(flag==0)

else

if(flag==2)

}int

main()

printf

("新增成功!\n");

int len;

len=

length

(l);

printf

("此時表的長度為%d\n"

,len)

;printf

("此時表的元素為:\n");

shuchu

(l);

printf

("*************************\n");

printf

("* 插入元素 :1 *\n");

printf

("* 刪除元素 :2 *\n");

printf

("* 退出 :0 *\n");

printf

("*************************\n");

int num;

while(1

)if(num==0)

}int flag;

printf

("1為清空,0為不清空.是否要清空表:\n");

scanf

("%d"

,&flag);if

(flag==1)

return0;

}

資料結構實驗1 順序表

1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 include 10 include 11 using namespace std 1213 define ok 1 14 define...

資料結構 1 順序表

資料結構的基礎知識 1968年美國克努特教授開創了資料結構的最初體系 資料結構是指資料的邏輯結構和儲存結構及其操作 資料結構是一門綜合性的專業客場,是一門介於數學 計算機硬體 計算機軟體之間的一門核心課程。是設計和實現編譯系統 作業系統 資料庫系統及其他系統程式和大型應用程式的基礎 資料的邏輯結構 ...

資料結構 1 順序表

目錄 順序表1.順序表的概念及結構 2.特點 3.動態順序表的實現 3.1 順序表初始化 3.2 順序表銷毀 3.3 順序表列印 3.4 檢查空間,如果滿了,進行增容 3.5 順序表尾插 3.6 順序表尾刪 3.7 順序表頭插 3.8 順序表頭刪 3.9 順序表查詢 3.10 順序表在pos位置插入...