65,210
社区成员
发帖
与我相关
我的任务
分享帮你改了下
#include <iostream>
using namespace std;
#define MAXSIZE 100
#define ElemType int
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
/*初始化*/
void InitList(SeqList& L)
{
L.last=-1;
//return(L);
}
/*创建顺序表*/
void Creat(SeqList *L,int n)
{
int i;
for(i=0;i <n;i++)
scanf("%3d",&L->elem[i]);
for(i=0;i <n;i++)
printf("%3d",L->elem[i]);
printf("\n");
}
/*排序*/
void arrsort(SeqList *L,int n)
{
int i,j,t;
for(i=0;i <n-1;i++)
{
for(j=i+1;j <n;j++)
{
if (L->elem[i]>L->elem[j])
{
t=L->elem[i];
L->elem[i]=L->elem[j];
L->elem[j]=t;
}
}
}
for(i=0;i <n;i++)
printf("%3d",L->elem[i]);
}
/*插入*/
#define OK 1
#define ERROR 0
int InsList(SeqList *L,ElemType e)
{
int k,i;
scanf("%3d",&i);
printf("%3d",i);
if((i <1)||(i>L->last+2))
{
printf("插入位置i值不合法");
return (ERROR);
}
for (k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return(OK);
}
/*删除*/
int DelList(SeqList *L,ElemType *e)
{
int k,i;
scanf("%3d",&i);
printf("%3d",i);
if((i <1)||(i>L->last+1)) //你的这里的last代表什么意思?前面都没有对其进行操作,现在突然出现??值一直为-1??
{printf("删除位置不合法!");
return(ERROR);
}
*e=L->elem[i-1];
for(k=i;i <=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
return(OK);
}
main()
{
SeqList L;ElemType e;
int i,m;
m=5;
InitList(L);
Creat(&L,m);
arrsort (&L,m);
Creat(&L,m);
InsList( &L,e);
for(i=0;i <m+1;i++)
printf("%3d",L.elem[i]);
Creat(&L,m);
DelList(&L,&e);
for(i=0;i <m-1;i++)
printf("%3d",L.elem[i]);
}
/*创建顺序表*/
SeqList Creat(SeqList *L,int n)
{int i;
for(i=0;i <n;i++)
scanf("%3d",&L->elem[i]);
for(i=0;i <n;i++)
printf("%3d",L->elem[i]);
printf("\n");
注意一下last的赋值...其它问题上面的已经说过了.
} #include "stdio.h"
#define MAXSIZE 100
#define ElemType int
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
/*初始化*/
SeqList InitList(SeqList &L) //此处需要引用参数
{
L.last=-1;
return(L);
}
/*创建顺序表*/
SeqList Creat(SeqList *L,int n)
{
int i;
for(i=0;i <n;i++)
{
scanf("%3d",&L->elem[i]);
L->last++; //此处需要累加
}
for(i=0;i <n;i++)
printf("%3d",L->elem[i]);
printf("\n");
return *L; //这需要返回值
}
/*排序*/
void arrsort(SeqList *L,int n)
{
int i,j,t;
for(i=0;i <n-1;i++)
{
for(j=i+1;j <n;j++)
{
if (L->elem[i]>L->elem[j])
{
t=L->elem[i];
L->elem[i]=L->elem[j];
L->elem[j]=t;
}
}
}
for(i=0;i <n;i++)
printf("%3d",L->elem[i]);
}
/*插入*/
#define OK 1
#define ERROR 0
int InsList(SeqList *L,ElemType e)
{
int k,i;
scanf("%3d",&i);
printf("%3d",i);
if((i <1)||(i>L->last+2)) //此处的L->last未初始化
{
printf("插入位置i值不合法");
return (ERROR);
}
for (k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return(OK);
}
/*删除*/
int DelList(SeqList *L,ElemType *e)
{
int k,i;
scanf("%3d",&i);
printf("%3d",i);
if((i <1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e=L->elem[i-1];
for(k=i;i <=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
return(OK);
}
main()
{
SeqList L;ElemType e = 20;
int i,m;
m=5;
InitList(L);
Creat(&L,m);
arrsort (&L,m);
InitList(L); //需要重新初始化
Creat(&L,m);
InsList( &L,e);
for(i=0;i <m+1;i++)
printf("%3d",L.elem[i]);
InitList(L); //需要重新初始化
Creat(&L,m);
DelList(&L,&e);
for(i=0;i <m-1;i++)
printf("%3d",L.elem[i]);
}