当前位置: 代码迷 >> C语言 >> [求助]这个程序错在哪里啊?算法似乎没什么问题啊~~
  详细解决方案

[求助]这个程序错在哪里啊?算法似乎没什么问题啊~~

热度:201   发布时间:2007-10-02 18:08:28.0
[求助]这个程序错在哪里啊?算法似乎没什么问题啊~~

#include <stdio.h>
#define DATATYPE int
#define MAXSIZE 100

typedef struct
{
DATATYPE DATAS[MAXSIZE];
int last;
}SQLIST;

void creat(SQLIST LST);//创建顺序表;
void ins(SQLIST LST);//插入操作;
void del(SQLIST LST);//删除操作;
void disp(SQLIST LST);//输出操作;
void init_sqlist(SQLIST LST)
{
LST.last=1;
return;
}//初始化顺序表;

main()
{
int i=0;
SQLIST LST[MAXSIZE];
int choose;//进行选择;
char ch;

do
{
printf("--选择操作--\n");
printf("1--创建顺序表\n");
printf("2--插入操作\n");
printf("3--删除操作\n");
printf("选择:");
scanf("%d",&choose);
switch(choose)
{
case 1:creat(SQLIST LST[i]);
disp(SQLIST LST[i]);
break;
case 2:ins(SQLIST LST[i]);
disp(SQLIST LST[i]);
break;
case 3:del(SQLIST LST[i]);
disp(SQLIST LST[i]);
break;
}
printf("是否还要继续操作?\n");
printf("是(Y)/否(N)\n");
ch=getchar();
}while(ch=='Y');
}

void creat(SQLIST LST)
{
int size=1;
char adjust;

printf("--创建顺序表--\n");
loop:
printf("输入第%个元素:",size);
scanf("%d",&LST.datas[size]);

printf("--是否还要继续输入数据?--\n");
printf("--是(Y)/否(N)--\n");
adjust=getchar();
if(adjust=='Y')
{
size++;
LST.last++;
goto loop;
}
else
return;
}

void ins(SQLIST LST)
{
int size;
int data_local;
int data_insert;
char adjust;
printf("--进行插入操作--\n");
loop:
printf("插入的元素:");
scanf("%d",&data_insert);
printf("插入的位置:");
scanf("%d",&data_local);

if(data_local>=MAXSIZE||data_local<=0)
printf("--输入错误,超出数组极限!--");
else
for(size=++LST.last;size>=data_local;size--)
LST.datas[size]=LST.datas[size-1];
LST.datas[data_local]=data_insert;

printf("--是否继续进行插入操作?--\n");
printf("是(Y)/否(N)\n");
adjust=getchar();
if(adjust=='Y')
goto loop;
else
return;
}

void del(SQLIST LST)
{
char adjust;
int size;
int data_del;

printf("--进行删除操作--\n");
loop:
printf("输入要删除元素的位置:");
scanf("%d",&data_del);
for(size=data_del;size<LST.last;size++)
LST.datas[size]=LST.datas[size+1];
LST.last--;

printf("--是否还要继续进行删除操作?--\n");
printf("是(Y)/否(N)");
adjust=getchar();
if(adjust=='Y')
goto loop;
else
return;
}

void disp(SQLIST LST)
{
int size;
printf("--所操作的顺序表--\n");
for(size=1;size<=LST.last;size++)
printf("%d ",LST.datas[size]);
}

搜索更多相关的解决方案: 算法  

----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define DATATYPE int
#define MAXSIZE 100
里面第二行换成typedef int DATATYPE; 试试;
----------------解决方案--------------------------------------------------------
#DEFINE 只是简单的替换,而TPYEDEF 是定义新的数据类型,不是简单的替换.
----------------解决方案--------------------------------------------------------
高手是不用goto的
----------------解决方案--------------------------------------------------------
  相关解决方案