代码:
#define MAXSIZE 20
#include <stdio.h>
typedef int Elemtype;
typedef struct
{
Elemtype elem[MAXSIZE];
int length;
}SqlList,*PSqlList;
void InitList(SqlList &L){
L.length=0;
}
void ClearList(SqlList &L)
{
L.length = 0;
}
int isEmpty(SqlList L)
{
if (L.length == 0)
{
return 1;
}
return 0;
}
int length(SqlList L){
return L.length;
}
int getElem(SqlList L,int i){
if(i<1||i>L.length){
printf("查找位置%d不合法\n", i);
return 0;
}else{
printf("元素值为%d\n", L.elem[i - 1]);
return 1;
}
}
int locateElem(SqlList L,int e){
for(int i=0;i<L.length;i++){
if(e==L.elem[i]){
printf("所查元素位序为%d", i + 1);
return i+1;
}
}
return 0;
}
int insert(SqlList &L,int i,int e){
if(i<1||i>L.length+1){
printf("插入位置%d不合法\n", i);
return 0;
}
if(L.length==MAXSIZE){
printf("顺序表已满,插入失败\n");
return 0;
}
for(int j=L.length-1;j>=i-1;j--){
L.elem[j+1]=L.elem[j];
}
L.elem[i-1]=e;
L.length++;
return e;
}
int deleteElem(SqlList &L,int i){
if(i<1||i>L.length){
printf("位置%d不合法\n", i);
return 0;
}
for(int j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
L.length--;
return 1;
}
int printList(SqlList L)
{
if (isEmpty(L))
{
printf("顺序表为空\n");
return 0;
}
for (int i = 0; i < L.length; i++)
printf("%-5d", L.elem[i]);
return 0;
}
int menu()
{
printf("\n\n\n**************************************菜单**********************************************\n");
printf("****************************************************************************************\n");
printf("**********1、 初始化InitList(SqlList &L), 2、清空ClearList(SqlList &L)**********\n");
printf("**********3、 判表空isEmpty(SqlList L) , 4、求表长length(SqlList L)");
printf("**********5、 按序号查找getElem(SqlList L,int i), 6、按值查找locateElem(SqlList L,int e)**********\n");
printf("**********7、 插入元素insert(SqlList &L,int i,int e), **********\n");
printf("**********8、 删除deleteElem(SqlList &L,int i) 9、遍历(输出)printList(SqlList L)**********\n");
printf("**********10、退出\n");
return 0;
}
int main()
{
SqlList L;
int i,e;
int option;
menu();
do
{
printf("\n输入选项:\n");
scanf("%d", &option);
switch (option)
{
case 1:
InitList(L);
printf("初始化成功\n");
break;
case 2:
ClearList(L);
printf("清空成功\n");
break;
case 3:
if (isEmpty(L))
printf("线性表为空\n");
else
printf("线性表不为空\n");
break;
case 4:
printf("线性表当前长度为%d\n", length(L));
break;
case 5:
printf("输入查找位序i\n");
scanf("%d", &i);
getElem(L,i);
break;
case 6:
printf("输入要查找的元素e\n");
scanf("%d", &e);
locateElem(L,e);
break;
case 7:
printf("输入插入位序i和元素e:\n");
scanf("%d%d", &i, &e);
insert(L,i,e);
break;
case 8:
printf("输入要删除的元素为序:\n");
scanf("%d",&i);
deleteElem(L,i);
break;
case 9:
printf("遍历结果为:\n");
printList(L);
break;
case 10: break;
default:
printf("输入选项不合法\n");
break;
}
} while (option != 10);
return 0;
}
结束语:
路漫漫其修远兮 吾将上下而求索