您的位置:首页 > 理论基础 > 数据结构算法

数据结构1-静态顺序表的实例与分析

2014-09-18 16:29 260 查看
实例说明:创建一个静态的顺序表存放整数,并可以完成插入和删除操作,代码如下:

#include"stdio.h"
#define MaxSize 10
/*静态顺序表的各种操作*/

/** 向顺序表中插入元素 */
/** 参数Sqlist:表首地址 */
/** 参数*len:表的长度 */
/** 参数i:插入元素的位置 */
/** 参数x:待插入的元素值 */

void insertElem(int Sqlist[],int *len,int i,int x)
{
int t;
if(*len==MaxSize || i<1 || i>*len+1)
{
printf("This insert is illegal\n");
return;
}
for(t=*len-1;t>=i-1;t--)
Sqlist[t+1]=Sqlist[t];
Sqlist[i-1]=x;
*len=*len+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];
}
*len=*len-1;
}
main(){
int Sqlist[MaxSize];
int len;
int i;
for(i=0;i<6;i++){
scanf("%d",&Sqlist[i]);
}
len=6;
for(i=0;i<len;i++){
printf("%d",Sqlist[i]);
}
printf("\nThe spare length is %d\n",MaxSize-len);

insertElem(Sqlist,&len,3,0);
for(i=0;i<len;i++)
printf("%d",Sqlist[i]);
printf("\nThe spare length is %d\n",MaxSize-len);

insertElem(Sqlist,&len,11,0);
DelElem(Sqlist,&len,6);
for(i=0;i<len;i++)
printf("%d",Sqlist[i]);
printf("\nThe spare length is %d\n",MaxSize-len);
system("pause");
return(0);
}

测试的结果如下:



实例的说明:

1.函数中的*len不能替换成len,由于替换成len之后就变成局部变量,main函数运行时无法传递真正的len值,只有传地址的时候才可以把插入和删除操作的真正len值传递过来。

2.system("psuse");return(0);的作用:由于从Visual Studio 2010开始,控制台程序的结尾处取消了console,导致一运行控制台结束就关闭控制台(我们看到的结果就是一闪而逝),在网上找了好多方法,发现就这种方式好用,所以特意在这里说明!(注:用Visual Studio 2010以下版本就不需要加这两条语句)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐