#include<stdio.h>
#define MaxSize 10 //默认最大长度
typedef struct //线性表的自定义结构体
{
int data[MaxSize];
int Length; //当前表长
}SeqList;
void InitList(SeqList& L) //线性表的初始化
{
int Length = 6;
for (int i = 1; i <=Length; i++)
{
L.data[i-1] = i;
}
}
bool ListInsert(SeqList& L, int i, int e) //插入操作,在第 i 位插入
{
if (i<1|| i>L.Length+1)
return false;
if (L.Length >= MaxSize)
return false;
for (int j = L.Length; j >= i;j--)
L.data[j] = L.data[j - 1];
L.data[i-1] = e;
L.Length++;
return true;
}
bool ListDelete(SeqList &L, int i, int &e) //删除操作,把第 i 位删除
{
if(i<1 || i>L.Length) {
return false;
}
for (int j=i; j< L.Length; j++) {
L.data[j-1] = L.data[j];
}
L.Length--;
e = L.data[i-1];
return true;
}
int main() //主函数,调用
{
SeqList L;
InitList(L);
L.Length = 6;
for (int i=0; i<L.Length; i++) { //遍历输出
L.data[i] = i;
printf("第%d个位置上的元素是:%d\n",i+1,L.data[i]);
}
printf("长度为%d\n",L.Length);
printf("\n");
int e = -1;
if (ListInsert(L, 3, 9)) {
printf("第3个位序上加上数字9:\n");
for (int i=0; i<L.Length; i++) {
printf("第%d个位置上的元素是:%d\n",i+1,L.data[i]);
}
printf("长度为%d\n\n",L.Length);
}
if(ListDelete(L, 2, e)) {
printf("把第2位序上数字删除:\n");
for (int i=0; i<L.Length; i++)
printf("第%d个位置上的数字是:%d\n",i+1,L.data[i]);
printf("删除的数字是:%d\n",e);
printf("长度为%d\n",L.Length);
} else
printf("删除位序不合法\n");
return 0;
}
|