microsoft visual 2010
#include
#include
#include
/*定义顺序表*/
typedef struct Seqlist
{
char date[100];
int length;
}seqlist;
/*初始化顺序表*/
void Initlist(struct Seqlist *L)
{
L->length=0;
}
/*建立顺序表*/
int Creatlist(Seqlist *L,int a[],int n){
if(n>100){
printf("空间不足");
return 0;
}
for( int j=0;jdate[j]=a[j];
}
L->length=n;
return 1;
}
/*输出顺序表*/
int Put(Seqlist *l,int n){
int i;
for(i=0;idate[i]");
}
return 0;
}
/*按序查找*/
int Get(Seqlist *L,int i){
if(i<1||i>L->length){
printf("查找位置不存在");
return 0;
}
else
{
int p;
p=L->date[i];
printf("查值为");
return p;
}
}
/*按内容查找*/
int Lcoate(Seqlist *L,int x){
for(int j=0;jlength;j++){
if(x==L->date[j]){
return j+1;
}
return 0;
}
}
/*插入*/
int Insert(Seqlist *L,int i,int x){
if(i<1||i>L->length){
printf("插入位置不存在");
return 0;
}
L->length++;
for(int j=L->length;j>i-1;j--){
L->date[j+1]=L->date[j];
}
L->date[i]=x;
return 1;
}
/*删除*/
int Delete(Seqlist *L,int i){
if(i<1||i>L->length){
printf("删除位置错误");
return 0;
}
for(int j=L->length;j>i;j--){
L->date[j-1]=L->date[j];
}
L->length--;
return 1;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
Seqlist *list1;//定义
Initlist(list1);//初始化
Creatlist(list1,a,10);//创建
Put(list1,10);//输出
printf("查找序号3");
Lcoate(list1,3);
printf("\n在第三位后插入一个100:\n");
Insert(list1,3,100);//插入
printf("查找内容为100的序号");
Get(list1,100);
printf("删除序号3");
Delete(list1,3);
system ("pause");
return 0;
}
C4715: “Lcoate”: 不是所有的控件路径都返回值
C4700: 使用了未初始化的局部变量“list1”
主要问题在最后,运行就直接崩溃软件出来run-time check failure #3
我要说一句,你的代码我用Dev-C++无法编译,你这个有语法问题
L->length=0;
,你不觉得会有问题吗?
Initlist(list1);//初始化
/*初始化顺序表*/
void Initlist(struct Seqlist *L)
{
L->length=0;
}
2.Put方法也有问题,你直接把printf的参数放进了字符串里面了,你没发现嘛
/*输出顺序表*/
int Put(Seqlist *l,int n){
int i;
for(i=0;i<n;i++){
printf("%d,l->date[i]");
}
return 0;
}
3.Lcoate 方法也有问题,你怎么能把return 0直接放循环里面呢,应该放外面才对的呀,循环走完都找不到才会返回0
/*按内容查找*/
int Lcoate(Seqlist *L,int x){
for(int j=0;j<L->length;j++){
if(x==L->date[j]){
return j+1;
}
return 0;
}
}
4.插入和删除也存在问题,你要从尾部开始遍历那么下标应该是长度-1开始啊