數據結構2-順序表的建立、刪除、遍歷和插入操作
#include<stdio.h>
#include<iostream>
#define MaxSize 10
using namespace std;
typedef struct //定義順序表結構體
{
int data[MaxSize];
int length;
} SqList;
//順序表初始化函數
void InitSqList(SqList &sqList)
{
sqList.length = 0;
int a[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0; i < MaxSize; i++)
{
sqList.data[i] = a[i];
sqList.length ++;
}
}
//刪除第i個元素(注意這里是第i個位置)此元素用e帶回
bool ListDelete(SqList &sqList,int i,int &e)
{
if(i < 1||i > sqList.length)
{
return false;
}
e = sqList.data[i-1];
for(int j = i; j < sqList.length; j++)
{
sqList.data[j-1] = sqList.data[j];
}
sqList.length--;
return true;
}
//在第i個位置插入元素(注意這里是第i個位置)
bool ListInsert(SqList &sqList,int i,int e)
{
if(i < 1||i > sqList.length||sqList.length >= MaxSize)
{
return false;
}
for(int j = sqList.length; j > i; j--)
{
sqList.data[j] = sqList.data[j-1];
}
sqList.data[i-1] = e;
sqList.length ++;
return true;
}
//打印順序表
void printSqList(SqList sqList)
{
for(int i = 0; i < sqList.length; i++)
{
printf("%d\n",sqList.data[i]);
}
}
int main()
{
SqList sqList;
printf("執行初始化函數\n");
InitSqList(sqList);
printf("初始化函數完成\n");
printf("初始長度為%d\n",sqList.length);
printf("打印順序表\n");
printSqList(sqList);
printf("驗證刪除超出范圍\n");
int e;
if(ListDelete(sqList,11,e))
{
printf("e為%d\n",e);
}
else
{
printf("刪除失敗\n");
}
printf("驗證刪除成功\n");
if(ListDelete(sqList,9,e))
{
printf("e為%d\n",e);
printf("打印順序表\n");
printSqList(sqList);
}
else
{
printf("刪除失敗\n");
}
printf("驗證插入超出范圍\n");
if(ListInsert(sqList,11,9))
{
printf("e為%d\n",e);
}
else
{
printf("插入失敗\n");
}
printf("驗證插入成功\n");
if(ListInsert(sqList,9,9))
{
printf("e為%d\n",e);
printf("打印順序表\n");
printSqList(sqList);
}
else
{
printf("插入失敗\n");
}
}