// // main.c // test1 // // Created by chen on 14-3-10. // Copyright (c) 2014年 chen. All rights reserved. // #include "stdio.h" #include<stdlib.h> #define MaxSize 10 //静态表的最大值为10 /*静态顺序表的各种操作*/ /** 向顺序表中插入元素 */ /** 参数Sqlist:表首地址 */ /** 参数*len: 表的长度 */ /** 参数i: 插入元素的位置 */ /** 参数x:待插入的元素值 */ void insertElem(int Sqlist[],int *len,int i,int x)//此处使用*len的作用就是使这个函数可以改变它的值。即:传入了地址! { int t; if(*len==MaxSize || i<1 || i>*len+1) { printf("This insert is illegal "); return; } /*非法插入*/ for(t=*len-1;t>=i-1;t--) Sqlist[t+1]=Sqlist[t]; Sqlist[i-1]=x; /*插入元素*/ *len=*len+1; /*表长加1*/ } /** 向顺序表中删除元素 */ /** 参数Sqlist:表首地址 */ /** 参数*len: 表的长度 */ /** 参数i: 删除元素的位置 */ void DelElem(int Sqlist[],int *len,int i) { int j; if(i<1 || i>*len) { printf("This insert is illegal"); return; } /*非法插入*/ for(j=i;j<=*len-1;j++) Sqlist[j-1]=Sqlist[j]; /*将第i个元素之后的元素前移*/ *len=*len-1; /*表长减1*/ } /**测试函数*/ int main() { /*按照题目要求进行测试*/ int Sqlist[MaxSize]; /*定义一个静态顺序表*/ int len; int i; printf("please input 6 numbers: "); for(i=0;i<6;i++) scanf("%d",Sqlist+i); //此句和下一句的功能一样,注意区分 //scanf("%d",&Sqlist[i]); /*从键盘输入6个整数*/ //c中,输入的分割是回车或者空格,数量不限制 len=6; for(i=0;i<len;i++) printf("%d ",Sqlist[i]); /*输出顺序表中的6个整数*/ printf(" The spare length is %d ",MaxSize - len); /*显示表中的剩余空间*/ insertElem(Sqlist,&len,3,0); /*在表中第3位置插入整数0*/ for(i=0;i<len;i++) printf("%d ",Sqlist[i]); /*输出顺序表中的所有元素*/ printf(" The spare length is %d ",MaxSize - len); /*显示表中的剩余空间*/ insertElem(Sqlist,&len,11,0); /*在表中第11位置插入整数0*/ DelElem(Sqlist,&len,6); /*删除顺序表中的第6个元素*/ for(i=0;i<len;i++) printf("%d ",Sqlist[i]); /*输出顺序表中的所有元素*/ printf(" The spare length is %d ",MaxSize - len); /*显示表中的剩余空间*/ //getche(); return 0; }