【問題描述】
設計乙個順序表操作演示程式。
【基本要求】
順序表操作演示程式提供乙個使用者介面,可演示的基本功能包括:
(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位置插入...