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

(1)建立4个元素的顺序表SqList={2,3,4,5},实现顺序表的基本操作;(2)在SqList={2,3,4,5}的元素4与5之间插入一个元素9,实现顺序表插入的... (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++源程序
展开
 我来答
方鸿晖09
2011-09-12 · TA获得超过1008个赞
知道小有建树答主
回答量:225
采纳率:66%
帮助的人:110万
展开全部
#include <iostream.h>

#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<<"创建顺序表"<<endl;
cout<<"请输入元素个数:";
int count;
cin>>count;
for(int i=0;i<count;i++)
{
cout<<"请输入第"<<i+1<<"个数:";
cin>>L.list[i];
++L.size;
}
}

void Print_Sq(SqList &L)
{
cout<<"输出顺序表:"辩判<<endl;
for(int i=0;i<L.size;i++)
cout<<L.list[i]<<" ";
}

void main()
{
SqList myList;
ElemType e,f,g,sc;
InitList_Sq(myList);
Create_Sq(myList);
cout<<"请输入要插入顺序表的元素:"<<endl;
cin>>g;
cout<<"请输入新插入元素在顺序表中哪两个元素之间:"<<endl;
cin>>e>>f;
if(!InsertList_Sq(myList,e,f,g))
cout<<"插入的位置不对!"<<endl;
cout<<"删除一个元素,请输入要删除的位序:"<<endl;
int wx;
cin>>wx;
if(!ListDelete_Sq(myList,wx,sc))
cout<<"删除元素失败!"<<endl;
Print_Sq(myList);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式