題目:創建一個靜態的順序表存放整數,大小為10,完成以下的操作。
(1)輸入6個整數,打印出順序表的內容,並顯示表中的剩余空間個數。
(2)在順序表中的第3個位置插入0,打印出順序表中的內容,並顯示表中剩余的空間個數。
(3)再試圖插入表中第11個位置整數0,程序提示超出范圍。
(4)刪除表中第6個元素,打印出順序表中的內容,並表示表中剩余的空間個數。
#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*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; //表長增加1
}
//向順序表中刪除元素
//參數Sqlist:表首地址
//參數*len:表的長度
//插入元素的位置
void DelElem(int Sqlist[],int *len,int i)
{
int j; if(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
} //測試函數
void main()
{
int Sqlist[MaxSize]; //定義一個靜態順序表
int len; int i;
for(i=0;i<6;i++)
scanf("%d",&Sqlist[i]); //從鍵盤輸入6個整數
len=6; for(i=0;i<len;i++)
printf("%d ",Sqlist[i]); //輸出6個整數
printf("\nThe spare length is %d\n",MaxSize-len); //顯示表中的剩余空間
insertElem(Sqlist,&len,3,0); //在表中第3個位置插入0
for(i=0;i<len;i++)
printf("%d ",Sqlist[i]); //輸出順序表中的所有元素
printf("\nThe space length is %d\n",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("\nThe space length is %d\n",MaxSize-len); //顯示表中的剩余空間
}