顺序表的删除问题 删不了。。。。。。。。。
我想删除第五个数字,为什么删除没有成功???求帮忙。。。。#include<iostream>
#include<stdlib.h>
using namespace std;
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
}SqList;
Status InitList_Sq(SqList &L){
//构造一个空的线性表L
L.elem = (ElemType *)malloc(MAXSIZE * sizeof(ElemType));
if(!L.elem)
exit(1); //存储分配失败
L.length = 0;//空表长度为0
return OK;
}
Status ListInsert(SqList &L,int j,ElemType e) //顺序表的插入
{
if((j<1)||(j>L.length+1))
return ERROR;
if(L.length==MAXSIZE)
return ERROR;
for(int u=L.length-1;u>=j-1;u--)
L.elem=L.elem;
L.elem=e;
++L.length;
//cout<<e<< " ";
return OK;
}
Status ListDelete(SqList &L, int i)//顺序表的删除
{
if((i<1)||(L.length))
return ERROR;
for(int j=i;j<=L.length-1;j++)
L.elem=L.elem;
--L.length;
return OK;
}
int LocateElem(SqList L,ElemType e)//顺序表的查找
{
for(int i=0;i<L.length;i++)
if(L.elem==e)
return i+1;
return OK;
}
Status GetElem(SqList L,int i,ElemType &e)//顺序表的取值
{
if(i<1||i>L.length) return ERROR;
e=L.elem;
return OK;
}
int main()
{
SqList L;
InitList_Sq(L);
for(int i=1;i<15;i++)
{
ListInsert(L,i,i);
}
cout<<endl;
for(int j=1;j<L.length;j++)
{
GetElem(L,j,j);
cout<<j<<" ";
}
ListDelete(L,5);
cout<<endl;
for(int k=1;k<L.length;k++)
{
GetElem(L,k,k);
cout<<k<<" ";
}
} 在删除的算法那里我把 if((i<1)||(L.length)) 改为if((i<1)||(i>L.length))然后主函数是这样写的。。。int main()
{
SqList L;
InitList_Sq(L);
for(int i=0;i<15;i++)
{
ListInsert(L,i+1,i+1);
cout<<i<<endl;
}
ListDelete(L,1);
for(int j=1;j<L.length;j++)
{
GetElem(L,j,j);
cout<<j<<" ";
}
cout<<endl;
但是在GetElem那里输出的数是2 4 6 8 10 12 14 奇数不见了,求分析原因。。。感激不尽 能不能把for后面作用的范围都加上{ } 呀。。。
然后把代码用代码格式发出来,在编辑栏点<>,然后把代码粘贴进去
现在发出来的好多缩进长度都不一致,看着好难受,而且看不出来层次。。。
页:
[1]