/*
创建一个静态的顺序表存放整数,大小为10,完成以下操作。
(1)输入6个整数,打印出顺序表中的内容,并显示表中剩余的空间个数
(2)在顺序表中的第3个位置插入元素0,打印出顺序表中的内容,并显示表中剩余的
空间个数。
(3)再试图插入表中第11个位置整数0,程序提示超出范围。
(4)删除表中第6个元素,打印出顺序表中的内容,并显示表中剩余的空间个数。
*/
#include <stdio.h>
#include <stdlib.h>
//首先,定义静态数组的大小为10
#define MaxSize 10
/**参数1: 需要变换的静态数组的首地址 **/
/**参数2: 表的长度 **/
/**参数3: 插入的位置(也就是第几个元素)**/
/**参数4: 待插入的元素值 **/
//因为len应该是一个通过函数操作后实际变化的参数,所以需要定义为一个指针类型
void insertElem(int Sqlist[],int *len,int i,int x)
{
int temp;
//非法情况
if (i>MaxSize||i<1||i>*len+1)
{
printf("this insert is illegal\n");
}
//正常插入
else
{
for (temp = *len-1;temp>=i-1;temp--)
{
Sqlist[temp+1] =Sqlist[temp];
}
Sqlist[i-1] = x;
*len = *len+1;
}
}
/**参数1: 需要变换的静态数组的首地址 **/
/**参数2: 表的长度 **/
/**参数3: 删除元素的位置(也就是第几个元素)**/
void DelElem(int Sqlist[],int *len,int i)
{
int temp;
//非法情况
if (i<1||i>*len)
{
printf("this delete is illegal\n");
}
else
{
for (temp = i;temp<=*len-1;temp++)
{
Sqlist[temp-1] = Sqlist[temp];
}
}
*len=*len-1;
}
//测试是否好用
void main()
{
int list[MaxSize];
int len;//表的长度
int pos;//位置
len = 6;
for (int i = 0;i<len;i++)
{
scanf("%d",&list[i]);
}
//打印并且输出表的剩余长度
for (int j = 0;j<len;j++)
{
printf("%d ",list[j]);
}
printf("表的剩余空间个数为:%d\n",MaxSize-len);
insertElem(list,&len,3,0);
for (int k = 0;k<len;k++)
{
printf("%d",list[k]);
}
printf("表的剩余空间个数为:%d\n",MaxSize-len);
insertElem(list,&len,11,0);
DelElem(list,&len,6);
for (int m = 0;m<len;m++)
{
printf("%d",list[m]);
}
printf("表的剩余空间个数为:%d\n",MaxSize-len);
}
妙趣横生的算法(1)之顺序表操作
最新推荐文章于 2018-04-21 17:23:31 发布