建立顺序表实现顺序表的基本操作,急求!!!

(1)建立4个元素的顺序表SqList={2,3,4,5},实现顺序表的基本操作;(2)在SqList={2,3,4,5}的元素4与5之间插入一个元素9,实现顺序表插入的基本操作;(3)在SqList={2,3,4,9,5}中删除指定位置(i=3)上的元素,实现顺序表删除的操作麻烦需要一个能通过运行的VC或VC++源程序
2026年09月19日 15:36
有1个网友回答
网友(1):

#include

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2

typedef int Status;

typedef int ElemType;
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 2

typedef struct shunxubiao{
ElemType *list;
int size;
int Maxsize;
}SqList;

int InitList_Sq(SqList &L)
{
// 构造一个空的线性表L。
L.list = new ElemType[LIST_INIT_SIZE];
if (!L.list) return OVERFLOW; // 存储分配失败
L.size = 0; // 长度为0
L.Maxsize = LIST_INIT_SIZE; // 初始存储容量
return OK;
} // InitList_Sq

int InsertList_Sq(SqList &L, int i, ElemType e)
{
ElemType *p,*q;
if (i < 1 || i > L.Maxsize+1) return ERROR;
q = &(L.list[i-1]); // q指示插入位置
for (p=&(L.list[L.Maxsize-1]); p >= q; --p)
*(p+1) = *p;
// 插入位置及之后的元素右移
*q = e; // 插入e
++L.size; // 表长增1
return OK;
} // ListInsert_Sq

int LocateElem_Sq(SqList L, ElemType e) {
// 在顺序表中查询数据元素e,若存在,则返回它的位序,否则返回 0
int i = 1; // i 的初值为第 1 元素的位序
ElemType *p = L.list; // p 的初值为第 1 元素的存储位置
while (i <= L.size && *p!=e)
{
++i;
++p;
}
if (i <= L.size) return i;
else return 0;
}

Status InsertList_Sq(SqList &L,ElemType e,ElemType f,ElemType g)
{
int i=LocateElem_Sq(L,e);
int j=LocateElem_Sq(L,f);
if(i==j-1)
{
InsertList_Sq(L,j,g);
return OK;
}
else return ERROR;
}

int GetList_Sq(SqList L,int i)
{
if(i>0 && i<=L.size)
{
return L.list[i];
}
else
return ERROR;
}
Status ListDelete_Sq(SqList &L, int i, ElemType &e)
{
ElemType *p,*q;
if ((i < 1) || (i > L.Maxsize)) return ERROR;
p = &(L.list[i-1]); // p为被删除元素的位置
e = *p; // 被删除元素的值赋给e
q = L.list+L.size-1; // 表尾元素的位置
for (++p; p <= q; ++p)
*(p-1) = *p; // 被删除元素之后的元素左移
--L.size; // 表长减1
return OK;
} // ListDelete_Sq

void Create_Sq(SqList &L)
{
cout<<"创建顺序表"< cout<<"请输入元素个数:";
int count;
cin>>count;
for(int i=0;i {
cout<<"请输入第"< cin>>L.list[i];
++L.size;
}
}

void Print_Sq(SqList &L)
{
cout<<"输出顺序表:"< for(int i=0;i cout<}

void main()
{
SqList myList;
ElemType e,f,g,sc;
InitList_Sq(myList);
Create_Sq(myList);
cout<<"请输入要插入顺序表的元素:"< cin>>g;
cout<<"请输入新插入元素在顺序表中哪两个元素之间:"< cin>>e>>f;
if(!InsertList_Sq(myList,e,f,g))
cout<<"插入的位置不对!"< cout<<"删除一个元素,请输入要删除的位序:"< int wx;
cin>>wx;
if(!ListDelete_Sq(myList,wx,sc))
cout<<"删除元素失败!"< Print_Sq(myList);
}