以顺序表作存储结构,实现线性表的插入。
顺序表定义如下:
#define MAXSIZE 10
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
} SqList;
下面给出了 线性表插入 函数的大部分内容,但缺少了一部分(以下划线____
标识出来的部分)。
请先将以下代码中画横线的部分补充完整,然后将完整的函数ListInsert
提交系统,完成题目要求的功能。
函数接口定义:
bool ListInsert(SqList &L,int i,ElemType e)
{
int j;
if(i<____ ||i> ____ )
{
cout<<"Insert position error!" ;
return false;
}
if( ____ )
{
cout<<"OVERFLOW!" ;
return false;
}
for( j=____ ;j>=____;j--)
L.elem[ ____ ]=L.elem[ ____ ];
L.elem[ ____ ]=e;
L.length++;
return true;
}
该函数中的参数说明:
int i
: 要插入的位置,取值范围是1 ~ L.length
ElemType e
: 要插入的数据元素- 注意:顺序表中第一个元素存储在
L.elem[0]
测试主程序样例:
#include <iostream>
using namespace std;#define MAXSIZE 10
typedef int ElemType;
typedef struct
{ ElemType *elem; int length; } SqList;bool CreateList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];
if (!L.elem) return false;
cin>>L.length;
for(int i=0;i<L.length;i++)
cin>>L.elem[i];
}//你提交的函数将出现在这个位置
//.....void print(SqList L)
{ int i;
for(i=0;i<L.length;i++)
if (i==0) cout<<'('<<L.elem[i];
else cout<<','<<L.elem[i];
cout<<')'<<endl;
}int main()
{ SqList L; int i; ElemType e;
CreateList(L);
cout<<"Before:"; print(L);
cin>>i>>e;
if ( ListInsert(L,i,e) )
{ cout<<"After:"; print(L); }
return 0;
}
输入样例:
在这里给出一组输入。例如:
5
1 3 5 7 9
3 4
输出样例:
在这里给出相应的输出。例如:
Before:(1,3,5,7,9)
After:(1,3,4,5,7,9)
样例2,3 省略
bool ListInsert(SqList &L,int i,ElemType e)
{
int j;
if(i<1 ||i>L.length+1)
{
cout<<"Insert position error!" ;
return false;
}
if( L.length==10 )
{
cout<<"OVERFLOW!" ;
return false;
}
for( j=L.length-1 ;j>=i-1;j--)
L.elem[ j+1 ]=L.elem[ j ];
L.elem[ i-1 ]=e;
L.length++;
return true;
}