|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;//顺序表中的元素类型
#define InitSize 100
//动态分配内存空间
typedef struct {
ElemType * data;
int MaxSize;//动态数组的最大容量
int length;//顺序表中的元素个数
}SeqList;
//插入函数,i代表插入的位置,从1开始,e要插入的元素
bool ListInsert(SeqList& L, int i, ElemType e) {
if (i <= 1 || i > L.length + 1)
return false;
if (L.length >= InitSize)//元素存满了
return false;
for (int j = L.length; j >= i; j--) {//移动顺序表中的元素
L.data[j] = L.data[j - 1];
L.data[i - 1] = e;//数组下标从零开始,插入第一个位置,访问的下标为0
L.length++;
return true;//走到这里代表插入成功,返回true
}
}
//删除顺序表中i位置的元素
bool ListDelete(SeqList& L, int i) {
if (i<1 || i>L.length)//判断删除的位置是否合法
return false;
if (L.length == 0)//顺序表中没有元素则无需删除
return false;
for (int j = i; j < L.length; j++)//从i位置依次把元素往前覆盖
L.data[j - 1] = L.data[j];
L.length--;//删除一个元素,顺序表的长度就减1
return true;
}
//打印顺序表中的元素
void PrintList(SeqList& L) {
for (int i = 0; i <L.length; i++){
printf("%3d", L.data[i]);//要求所有的元素打印到一排
}
printf("\n");
}
int main(void) {
SeqList L;//顺序表的名称
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.length = 3;
bool ret;
ElemType Cr;
printf("请输入想插入的元素值:\n");
scanf("%d", &Cr);
ret = ListInsert(L, 2, Cr);
if (ret)
{
printf("插入成功\n");
PrintList(L);//打印成功后的顺序表
}
else
{
printf("插入失败");
}
int i;//要删除的元素的位置
printf("请输入要删除的位置:");
scanf("%d", &i);
ret = ListDelete(L, i);
if (ret)
{
printf("删除成功\n");
PrintList(L);
}
else
{
printf("删除失败\n");
}
}
|
|