// 实现的基本功能为:
// (1)线性表的建立
// (2)线性表的定位操作
// (3)线性表的插入、删除操作
// (4)线性表的输出操作
// 建立线性表的顺序储存结构
// typedef struct
// { ElemType elem[MAXSIZE];
// int length;
// }SqList;
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#define MAXSIZE 30 //数组最大下界
typedef int ElemType; // 数组元素类型
typedef struct
{ ElemType elem[MAXSIZE]; //一维数组子域
int length; //表长度子域
}SqList; //顺序储存的结构体类型
SqList a,b,c;
// 建立线性吧表
void creat_list(SqList*L)
{ int i;
printf("\n n=?");
scanf("%d",&L->length);
for(i=0;i<L->length;i++)
{printf("\n data%d=",i);
scanf("%d",&L->elem[i]);
}
}
//输出线性表
void print_list(SqList L)
{ int i;char ch;
printf("\n");
for(i=0;i<=L.length-1;i++)
printf("%10d",L.elem[i]);
printf("\n\n 按回车键,继续。");
ch=getch();
}
//在线性表的第i个位置插入元素e
void insert_sq(SqList*L,int i,ElemType e)
{ int j;
if(L->length==MAXSIZE)
printf("\n overflow!");
else if(i<1||i>L->length+1)
printf("\n erroe i !");
else
{ for(j=L->length-1;j<i-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=e;
L->length++;
}
}
// 删除第i个元素,返回其值
ElemType delete_sq(SqList*L,int i)
{ ElemType x; int j;
if(L->length==0)
{ printf("\n线性表为空表。"); exit(1);
}
else if(i<1||i>L->length)
{ printf("\n i值错误!"); //x=-1;
exit(1);
}
else
{ x=L->elem[i-1];
for(j=i;j<=L->length-1;j++)
L->elem[j-1]=L->elem[j];
L->length--;
}
return(x);
}
//查找值为e的元素,返回它的位置
int locat_sq(SqList L,ElemType e)
{ int i=0;
while(i<=L.length-1&&L.elem[i]!=e)
i++;
if(i<L.length-1) return(i+1);
else return -1;
}
//主函数
void main()
{ int i,k,loc;
ElemType e,x;
char ch;
do{ printf("*********************************************************************");
printf("\n\n\n");
printf("\n 1.建立线性表 *");
printf("\n 2.在第i个位置插入元素e *");
printf("\n 3.删除第i个元素,返回其值 *");
printf("\n 4.查找值为e的元素 *");
printf("\n 5.结束程序运行 *");
printf("\n====================================================== *");
printf("\n 请选择 (1,2,3,4,5)\n");
printf("*********************************************************************");
scanf("%d",&k);
switch(k)
{ case 1:{creat_list(&a);
print_list(a);} break;
case 2:{printf("\n i,e=?");
scanf("%d,%d",&i,&e);
insert_sq(&a,i,e);
print_list(a);
} break;
case 3:{printf("\n i=?");
scanf("%d",&i);
x=delete_sq(&a,i);
print_list(a);
printf("\n x=%d",x);
}break;
case 4:{printf("\n e=?");
scanf("%d",&e);
loc=locat_sq(a,e);
if(loc=-1)
printf("\n 未找到%d",loc);
else
printf("\n 已找到,元素的位置是%d",loc);
}break;
}
}while(k!=5);
printf("\n 按回车键,返回。"); ch=getch();
}//main
// (1)线性表的建立
// (2)线性表的定位操作
// (3)线性表的插入、删除操作
// (4)线性表的输出操作
// 建立线性表的顺序储存结构
// typedef struct
// { ElemType elem[MAXSIZE];
// int length;
// }SqList;
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#define MAXSIZE 30 //数组最大下界
typedef int ElemType; // 数组元素类型
typedef struct
{ ElemType elem[MAXSIZE]; //一维数组子域
int length; //表长度子域
}SqList; //顺序储存的结构体类型
SqList a,b,c;
// 建立线性吧表
void creat_list(SqList*L)
{ int i;
printf("\n n=?");
scanf("%d",&L->length);
for(i=0;i<L->length;i++)
{printf("\n data%d=",i);
scanf("%d",&L->elem[i]);
}
}
//输出线性表
void print_list(SqList L)
{ int i;char ch;
printf("\n");
for(i=0;i<=L.length-1;i++)
printf("%10d",L.elem[i]);
printf("\n\n 按回车键,继续。");
ch=getch();
}
//在线性表的第i个位置插入元素e
void insert_sq(SqList*L,int i,ElemType e)
{ int j;
if(L->length==MAXSIZE)
printf("\n overflow!");
else if(i<1||i>L->length+1)
printf("\n erroe i !");
else
{ for(j=L->length-1;j<i-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=e;
L->length++;
}
}
// 删除第i个元素,返回其值
ElemType delete_sq(SqList*L,int i)
{ ElemType x; int j;
if(L->length==0)
{ printf("\n线性表为空表。"); exit(1);
}
else if(i<1||i>L->length)
{ printf("\n i值错误!"); //x=-1;
exit(1);
}
else
{ x=L->elem[i-1];
for(j=i;j<=L->length-1;j++)
L->elem[j-1]=L->elem[j];
L->length--;
}
return(x);
}
//查找值为e的元素,返回它的位置
int locat_sq(SqList L,ElemType e)
{ int i=0;
while(i<=L.length-1&&L.elem[i]!=e)
i++;
if(i<L.length-1) return(i+1);
else return -1;
}
//主函数
void main()
{ int i,k,loc;
ElemType e,x;
char ch;
do{ printf("*********************************************************************");
printf("\n\n\n");
printf("\n 1.建立线性表 *");
printf("\n 2.在第i个位置插入元素e *");
printf("\n 3.删除第i个元素,返回其值 *");
printf("\n 4.查找值为e的元素 *");
printf("\n 5.结束程序运行 *");
printf("\n====================================================== *");
printf("\n 请选择 (1,2,3,4,5)\n");
printf("*********************************************************************");
scanf("%d",&k);
switch(k)
{ case 1:{creat_list(&a);
print_list(a);} break;
case 2:{printf("\n i,e=?");
scanf("%d,%d",&i,&e);
insert_sq(&a,i,e);
print_list(a);
} break;
case 3:{printf("\n i=?");
scanf("%d",&i);
x=delete_sq(&a,i);
print_list(a);
printf("\n x=%d",x);
}break;
case 4:{printf("\n e=?");
scanf("%d",&e);
loc=locat_sq(a,e);
if(loc=-1)
printf("\n 未找到%d",loc);
else
printf("\n 已找到,元素的位置是%d",loc);
}break;
}
}while(k!=5);
printf("\n 按回车键,返回。"); ch=getch();
}//main