2013年(12)
分类: C/C++
2013-12-07 14:02:50
/***********************************
*静态顺序表的插入和删除
***********************************/
#include
#include
#define MAXSIZE 100
/** 向顺序表中插入元素 */
/** 参数Sqlist:表首地址 */
/** 参数*len: 表的长度 */
/** 参数i: 插入元素的位置 */
/** 参数x:待插入的元素值 */
void insertElem(int sqlist[],int *len,int i,int x);
/** 向顺序表中删除元素 */
/** 参数Sqlist:表首地址 */
/** 参数*len: 表的长度 */
/** 参数i: 插入元素的位置 */
void DelElem(int sqlist[],int *len,int i);
int menu();
void InitSqlist(int sqlist[],int *len);
void Insert(int sqlist[],int *len);
void Delete(int sqlist[],int *len);
void Print(int sqlist[],int len);
int main(void)
{
int sqlist[MAXSIZE];
int len=0;
InitSqlist(sqlist,&len);
while(1)
{
switch(menu())
{
case 1:
Insert(sqlist,&len);
Print(sqlist,len);
break;
case 2:
Delete(sqlist,&len);
Print(sqlist,len);
break;
case 3:
InitSqlist(sqlist,&len);
Print(sqlist,len);
break;
case 0:
exit(0);
default:
printf("error!");
}
}
return 0;
}
void Print(int sqlist[],int len)
{
int i;
for (i = 0; i < len; ++i)
{
printf("%d ",sqlist[i] );
}
puts("\n");
}
int menu()
{
int n;//记录选择
puts("1)进行插入 2)进行删除 ");
puts("3)重置顺序表 0)退出");
printf("输入选择的操作:");
scanf("%d",&n);
return n;
}
void InitSqlist(int sqlist[],int *len)
{
int n;//初始化的数字个数
int i;
*len=0;
puts("输入初始化的数字个数:");
scanf("%d",&n);
for(i=0;i
printf("输入第%d个数:",i+1);
scanf("%d",&sqlist[i]);
(*len)++;
}
}
void Insert(int sqlist[],int *len)
{
int x;//要插入的数字
int i;//要插入或要删除的位置
puts("请输入要插入的数字:");
scanf("%d",&x);
puts("请输入要插入的位置:");
scanf("%d",&i);
insertElem(sqlist,len,i,x);
}
void Delete(int sqlist[],int *len)
{
int i;//要插入或要删除的位置
puts("请输入要删除的位置:");
scanf("%d",&i);
DelElem(sqlist,len,i);
}
void insertElem(int sqlist[],int *len,int i,int x)
{
(*len)++;//使长度+1
int n=(*len)-1;
//int temp;
for(;n>i-1;n--)
{
sqlist[n]=sqlist[n-1];
}
sqlist[n]=x;
}
void DelElem(int sqlist[],int *len,int i)
{
int n;
for(n=i-1;n<*len;n++)
{
sqlist[n]=sqlist[n+1];
}
(*len)--;
}