注册 登录
编程论坛 新人交流区

小弟现正自学学数据结构,编了一个顺序表,出了问题,都不知道如何去解决...

不要乱编程 发布于 2007-10-10 17:39, 387 次点击

#include"stdio.h"
#include"malloc.h"
#define maxsize 100
typedef char Sqltype;
typedef struct
{
Sqltype Sql[maxsize];
int leng;
}sqlist;


void creatList(sqlist *l)
{
int i,n;
printf("输入元素个数\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个元素值:",i+1);
scanf("%d",l->Sql+i);
}
}


insert(sqlist *l,Sqltype i,int x)
{
int j;
if(l->leng==maxsize-1)
{
printf("线性表已满");
return 0;
}
else if(i<1||i>(l->leng))
{
printf("你的输入超出范围了!");
return 0;
}
else
for(j=l->leng;i>=j;j--)
{
l->Sql[i]=l->Sql[i-1];
l->Sql[i-1]=x;
l->leng++;
}
return 1;
}


del(sqlist *l,int x)
{
if(x<1||(x>l->leng))
{
printf("错误,该值不存在!请重新输入!");
return 0;
}
else
for(;x<l->leng;x++)
{
l->Sql[x]=l->Sql[x+1];
l->leng--;
printf("删除成功!");
}
return 1;
}

/* Location(sqlist l, Sqltype i)
{
int x=0;
while(x<(l->leng) && (l->Sql[x])!=i)
x++;
if(x>=l->leng)
{
printf("超出范围!");
return 0;
}
else
return x;
}*/


void prinout(sqlist *l)
{
int i;
if(l->leng<0)
{
printf("无此顺序表!");
}
else
for(i=0;i<=l->leng;i++)
{
printf("第%d个元素是:%s",i+1,l->Sql[i]);
printf("\n");
}
}

void main()
{
int i,j;
char a;
sqlist *L;
L=(sqlist*)malloc(sizeof(sqlist));
do
{

printf("1.创建顺序表\n");
printf("2.插入顺序表\n");
printf("3.删除顺序表\n");
// printf("4.查找顺序表中的一个元素\n");
printf("5.输出顺序表\n.");
printf("6.退出\n");
printf("****请输入你的选择****");
scanf("%d",j);
switch(j)
{
case 1:
creatList(L);break;
case 2:
printf("请输入要插入数值:");
scanf("%s",a);
printf("请输入要插入的位置:");
scanf("%d",&i);
insert(L,a,i);
break;
case 3:
printf("输入你要删除的数值:");
scanf("%d",i);
del(L,i);
break;
/* case 4:
printf("请输入你要查找的位置:");
scanf("%d",i);
Location(L,i);
break;*/
case 5:
prinout(L);
break;
default:
if(j!=6)
{
printf("非法输入,请重新选择");
}
else break;
}
}while(j!=6);
}




[此贴子已经被作者于2007-10-10 17:53:17编辑过]

3 回复
#2
不要乱编程2007-10-10 17:40

这东西好难啊..
看起来好吃力!!

#3
尼古拉2007-10-10 23:10
这东西怎么在这里发啊
#4
爱死了C2007-10-10 23:34

看不懂,强~~~~你是新手么?

1