首页 新闻 搜索 专区 学院

为什么添加数据不成功呢(⊙o⊙)? ,菜鸟求解析 哭

0
[待解决问题]

#include<stdio.h>
#include<stdlib.h>
#define Max_Size 5/*线性表可能达到的最大长度*/
typedef int DataType;
typedef struct List{
DataType data[Max_Size];
int length;/* 当前表数据元素个数*/
}SeqList;

void InitList(SeqList &L)//将线性表L初始化为空表
{
L.length=0;
}
int Locate(SeqList L, DataType y)
{
int i;
for(i=0;i<=L.length;i++)
if(L.data[i]==y)
return i+1;
else
return -1;
}
int InsList(SeqList &L,int i,DataType y)
{
/* int j;
if(L.length==Max_Size)return -1;
if(i<1||i>L.length+1)return -1;
for(j=L.length+1;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=y;
L.length++;
return i;
*/
int j;
if(L.length==Max_Size) return -1; //线性表L已存满数据 不能再插入数据了。
if(i<1||i>L.length+1) /*若i越界则插入失败*/
return -1;

//线性表i位置的后继数据元素往后移

for(j = L.length - 1; j >= i - 1; j--)
L.data [j + 1] = L.data [j];
L.data[i-1]=y; //插入数据元素
L.length++; // 成功加入数据元素,线性表L的长度要加1
return i;
}
void DispList(SeqList L) //显示线性表L的所有数据元素
{
int i;
for(i=1;i<=L.length;i++)
printf("%d ",L.data[i-1]);
printf("\n");

}
int DelElem(SeqList &L, int i)
{
int j;
if(i<1||i>L.length) //i不在指定范围,删除失败
return -1;
for(j=i;j<L.length;j++) //线性表i位置的后继数据元素往前移
L.data[j-1]=L.data[j];
L.length--;
return 1;
}
DataType GetData(SeqList L, int i)
{
if(i>1&&i<=L.length){
i=L.data[i-1];
return i;}
else
printf("mistakes");
}
int EmptyList(SeqList L){
if(L.length==0)
return 1;
else
return 0;
}
int ChgList(SeqList &L, int i,DataType y) {
//把指定位置为i的数据元素改为y,若修改成功返回1,否则返回-1
if(i>1&&i<=L.length)
L.data[i]=y;
else
return -1;
}
int DelElemV(SeqList &L,DataType y) /*删除指定的数据元素y 删除成功返回1,否则返回-1*/
{
int k;
for(k=0;k<L.length;k++)
{ if(L.data[k]==y)
DelElem(L, k+1);

}
return -1;
}
void main()
{//验证
SeqList L,L1;
InsList (L,1,90);
InsList (L,2,80);
InsList (L,3,90);
InsList (L,4,790);
DataType y=11;

DispList(L);
DelElem(L,1);
DispList(L);
}

 

机智的小马甲的主页 机智的小马甲 | 菜鸟二级 | 园豆:202
提问于:2016-03-16 21:39
< >
分享
所有回答(1)
1
void main()
{//验证
    SeqList L,L1;
InitList(L); // 增加这一句 InsList (L,
1,90); InsList (L,2,80); InsList (L,3,90); InsList (L,4,790); DataType y=11; DispList(L); DelElem(L,1); DispList(L); }

你的List没有初始化就使用,导致你的L.Length的值不是0而是一个随机的值,当然不会有效果了。

另外你的代码问题很多,这里就不一一指出了。如果是C语言代码请用指针来传递数组,如果是C++的话应该使用面向对象的方式。

飞鸟_Asuka | 园豆:251 (菜鸟二级) | 2016-03-16 22:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册