#include<stdio.h>
#define MAXSIZE 1000
typedef int elem;
/*定义线性表 */
typedef struct
{
int elem[1000];
int last;
}SeqList;
/*创建空表*/
void InitList(SeqList *Lp)
{
Lp->last=-1;
}
/*输入递增有序顺序表 */
void PutseqList(SeqList *Lp,int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d", &(Lp->elem[i]));
Lp->last=Lp->last+n;
}
/*求表长 */
int LengthList(SeqList *Lp)
{
int Len;
Len=Lp->last+1;
}
/*判断插入位置*/
int PositionList(SeqList *Lp, int X)
{
int i;
for(i=0;i<=Lp->last;i++)
if(X<Lp->elem[i])
return i+1;
return(Lp->last+2);
}
/*插入*/
int InsertList(SeqList *Lp,int i,int x)
{
int j;
if(Lp->last==MAXSIZE-1)
{
printf("表满");
return(-1);
}
if(i<1||Lp->last+2)
{
printf("位置错");
return(0);
}
for(j=Lp->last;j>=i-1;j--)
Lp->elem[j+1]=Lp->elem[j];
Lp->elem[i-1]=x;
Lp->last++;
return(1);
}
/*输出元素 */
int OutputSeqList(SeqList *Lp)
{
int i;
printf("输出结果为:");
for(i=0;i<=Lp->last;i++)
printf("%d",Lp->elem[i]);
return(Lp->elem[i]);
}
int main()
{
int s,c;
SeqList L;
InitList(&L);
printf("请输入顺序表的长度:");
scanf("%d",&s);
printf("请输入递增顺序表:");
PutseqList(&L,s);
LengthList(&L);
printf("表长为%d\n",LengthList(&L));
printf("请输入要插入的元素:");
scanf("%d",&c);
InsertList(&L,PositionList(&L,c),c);
OutputSeqList(&L);
printf("\n");
}
我估计是判断位置和插入那里有错,但我看不出来,谢谢!
if(i<1||Lp->last+2)
改为
if(i<1||i>Lp->last+2)
代码没什么大问题,求表长函数缺返回值:
/*求表长 */
int LengthList(SeqList* Lp)
{
int Len;
Len = Lp->last + 1;
return Len; //函数缺返回值
}