数据结构_顺序表_安插函数_只能插入5个数_求大神赐教
数据结构_顺序表_插入函数_只能插入5个数_求大神赐教
这是程序源码:顺序表
这是测试函数:
这是运行结果:

测试函数明明给顺序表插入10个数,可是却只能循环5次不知道这是为什么?
------解决思路----------------------
ListInitiate()只是把L也就是传入的SeqList 实例L的size设为0,L本身并没有分配内存。
改成SeqList *myList = new SeqList();
没有初始化,你运行没出错吗?
这是程序源码:顺序表
#include<iostream>
#define Maxsize 100
typedef int DataType;
//定义结构体
typedef struct SeqList
{
DataType list[Maxsize];
int size;
} SeqList;
//初始化
void ListIniate(SeqList *L)
{
L->size=0;
}
//求当前元素个数
int ListLength(SeqList L)
{
return L.size;
}
//插入元素,成功返回1,失败返回0
int ListInsert(SeqList *L,int i,DataType x)
{
if(L->size>=Maxsize)
{
std::cout<<"顺序表已满无法插入!"<<std::endl;
return 0;
}
else if(i<0||i>L->size)
{
std::cout<<"插入位置输入不合法!"<<std::endl;
return 0;
}
else
{
for(int j=L->size;j>i;j--)
{
L->list[j]=L->list[j-1];
}
L->list[i]=x;
L->size++;
return 1;
}
}
//删除元素,成功返回1,失败返回0
int ListDelete(SeqList *L,int i,DataType *x)
{
if(L->size<=0)
{
std::cout<<"顺序表已空无法删除!"<<std::endl;
return 0;
}
else if(i<0||i>L->size-1)
{
std::cout<<"删除位置不合法!"<<std::endl;
return 0;
}
else
{
*x=L->list[i];
for(int j=i+1;j<=L->size-1;j++)
{
L->list[j-1]=L->list[j];
}
L->size--;
return 1;
}
}
//取数据元素,success return 1, fail return 0
int ListGet(SeqList L,int i,DataType *x)
{
if(i<0||i>=L.size)
{
std::cout<<"参数i不合法!"<<std::endl;
return 0;
}
else
{
*x=L.list[i];
return 1;
}
}
这是测试函数:
#include<iostream>
#define Maxsize 100
typedef int DataType;
#include "SeqList.h"
int main()
{
SeqList *myList;
int x;
ListIniate(myList);
for ( int i = 0; i < 10; i++ )
{ std::cout<<"这是第"<<i+1<<"次循环"<<std::endl;
if (ListInsert(myList, i, i+1) == 0)
{
std::cout<<"插入错误"<<std::endl;
return 0 ;
}
}
}
这是运行结果:
测试函数明明给顺序表插入10个数,可是却只能循环5次不知道这是为什么?
------解决思路----------------------
ListInitiate()只是把L也就是传入的SeqList 实例L的size设为0,L本身并没有分配内存。
改成SeqList *myList = new SeqList();
没有初始化,你运行没出错吗?