初学数据结构,C语言基础不太好,做这么一个练习,东拼西凑,严蔚敏的书上C++和C混用,不知道纯用C怎么写
设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
测试输入:
1,3,5,8,9
2
期待输出:
1,2,3,5,8,9
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 20
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList(SqList *L){ //构造一个空的线性表L
L->elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem){
exit(OVERFLOW);
}
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}
SqList *L;
void Input(SqList *L,char shu)//写入
{
InitList(L);
int input=0;
while((getchar())!='\n')
{
if(shu!=',')
{
shu=shu-48;
L -> elem[input]=shu;
input++;
}
}
}
Status ListInsert(SqList *L, int i, ElemType e){
int k;
if (L->length == LIST_INIT_SIZE){ //线性表已满
return ERROR;
}
if (i < 1 || i > L->length+1){ //当i不在范围内时
return ERROR;
}
if (i <= L->length){ //若插入位置不在表尾
for(k = L->length-1;k >= i-1;k--){
L->elem[k+1] = L->elem[k];
}
}
L->elem[i-1] = e;
L->length++;
return OK;
}
int main(){
int x,i;
char shu;
int d=0;
InitList(L);
Input(L,shu);
scanf("%d",&x);
int r=0;
while((L->elem[r])>x){
r++;
}
ListInsert(L, i, x);
for(d=0;d<L->length;d++){
if(d!=(L->length-1)){
printf("%d,",L->elem[d]);
}else{
printf("%d",L->elem[d]);
}
}
return 0;
}
编译不报错,但运行时弹出黑框后无法操作,过几秒返回 3221225477
应该是读入的时候出的问题,这个逗号也很难办