
C++ 数据结构 顺序表调用问题【菜鸟级】
头文件seqlist.h:#ifndefSEQLIST_H#defineSEQLIST_H#include<iostream>#include<stdlib.h>usin...
头文件seqlist.h:
#ifndef SEQLIST_H
#define SEQLIST_H
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int datatype;
const int maxlen=100;
class seqlist{
private:
datatype data[maxlen];
int len;
public:
seqlist(void);
int input(int len);
~seqlist(void);
int length(void) const;
datatype get(int i) const;
int locate(datatype & item) const;
int insert(const datatype & item,int i);
int change(int x,int y);
datatype Delete(int i);
int empty(void)const;
void clear(void);
void print(int);
};
#endif
int x=0,a=0,b=0;
int len=0;
seqlist::seqlist(void):len(0){}
seqlist::~seqlist(void){}
int seqlist::input(int len){
for(int i=1;i<=len;i++){
cout<<"请输入第"<<i<<"个元素:";
cin>>x;
data[i-1]=x;}
cout<<endl;
return 0;
}
int seqlist::length(void)const{return len;}
//==========以下几段都有问题==========//
int seqlist::insert(const datatype & item,int i)
{
if(len==maxlen) return 0;
if(i<1||i>len+1) return 0;
for(int j=len;j>=i;j--) data[j]=data[j-1];
data[i-1]=item;
len++;
return 1;
}
datatype seqlist::Delete(int i)
{
int j;
if ((i<1)||(i>len)){cout<<"位置超界!"<<endl;}
else if(len==0){cout<<"空表不能删除"<<endl;}
datatype t=data[i-1];
for (j=i;j<len;j++)
data[j-1]=data[j];
len--;
return t;
}
int seqlist::locate(datatype&item)const{
int i=1;
for(i=1;i<=len;i++){
if (data[i-1]==item) {
cout<<"此元素在第"<<i<<"个位置上"<<endl;}
}
if(i>len){cout<<"抱歉,您所查找的值并不存在"<<endl<<endl;}
return i;
}
int seqlist::empty(void)const{if(len==0){cout<<"此表为空表"<<endl;} return 1;}
void seqlist::clear(void){len=0;}
datatype seqlist::get(int i)const{
if(i>=1&&i<=len) return data[i-1];
return NULL;
}
int seqlist::change(int x,int y){
for(int j=1;j<=len;j++){
if (data[j]==a) {data[j]=b;}
}
return 0;
}
//==========//
void seqlist::print(int size) {
cout<<"顺序表:"<<endl;
for (int i=1;i<=size;i++){
{cout<<data[i-1]<<" ";}
}
cout<<endl<<endl;
}
源文件:
#include<iostream>
#include"seqlist.h"
using namespace std;
void main()
{
int n=0,i=0,j=0,c=0;
seqlist s;
do{
cout<<"1、新建顺序表"<<endl;
cout<<"2、插入元素"<<endl;
cout<<"3、删除元素"<<endl;
cout<<"4、查找元素"<<endl;
cout<<"5、修改元素"<<endl;
cout<<"7、输出顺序表"<<endl;
cout<<"0、结束"<<endl;
cout<<"请选择(0-7):"<<endl;
cin>>c;
switch(c)
{
case 1:
cout<<"将输入的元素个数:";
cin>>len;
s.input(len);
s.print(len);
break;
case 2:
cout<<"请输入一个要插入的元素:"<<endl;
cin>>x;
cout<<"请输入要插入元素的位置:"<<endl;
cin>>i;
s.insert(data[x],i);
s.print(len);
break;
case 3:
cout<<"请输入一个要删除的元素的位置:"<<endl;
cin>>i;
s.Delete(i);
s.print(len);
break;
case 4:
cout<<"请输入一个要查找的元素:"<<endl;
cin>>j;
s.locate(j);//指针???
break;
case 5:
cout<<"请输入一个要修改的元素:"<<endl;
cin>>a;
cout<<"请输入修改后的元素:"<<endl;
cin>>b;
s.change(a,b);
s.print(len);
break;
case 7:
s.print(len);
}
}while(c!=0);
}
求大神解答> < 展开
#ifndef SEQLIST_H
#define SEQLIST_H
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int datatype;
const int maxlen=100;
class seqlist{
private:
datatype data[maxlen];
int len;
public:
seqlist(void);
int input(int len);
~seqlist(void);
int length(void) const;
datatype get(int i) const;
int locate(datatype & item) const;
int insert(const datatype & item,int i);
int change(int x,int y);
datatype Delete(int i);
int empty(void)const;
void clear(void);
void print(int);
};
#endif
int x=0,a=0,b=0;
int len=0;
seqlist::seqlist(void):len(0){}
seqlist::~seqlist(void){}
int seqlist::input(int len){
for(int i=1;i<=len;i++){
cout<<"请输入第"<<i<<"个元素:";
cin>>x;
data[i-1]=x;}
cout<<endl;
return 0;
}
int seqlist::length(void)const{return len;}
//==========以下几段都有问题==========//
int seqlist::insert(const datatype & item,int i)
{
if(len==maxlen) return 0;
if(i<1||i>len+1) return 0;
for(int j=len;j>=i;j--) data[j]=data[j-1];
data[i-1]=item;
len++;
return 1;
}
datatype seqlist::Delete(int i)
{
int j;
if ((i<1)||(i>len)){cout<<"位置超界!"<<endl;}
else if(len==0){cout<<"空表不能删除"<<endl;}
datatype t=data[i-1];
for (j=i;j<len;j++)
data[j-1]=data[j];
len--;
return t;
}
int seqlist::locate(datatype&item)const{
int i=1;
for(i=1;i<=len;i++){
if (data[i-1]==item) {
cout<<"此元素在第"<<i<<"个位置上"<<endl;}
}
if(i>len){cout<<"抱歉,您所查找的值并不存在"<<endl<<endl;}
return i;
}
int seqlist::empty(void)const{if(len==0){cout<<"此表为空表"<<endl;} return 1;}
void seqlist::clear(void){len=0;}
datatype seqlist::get(int i)const{
if(i>=1&&i<=len) return data[i-1];
return NULL;
}
int seqlist::change(int x,int y){
for(int j=1;j<=len;j++){
if (data[j]==a) {data[j]=b;}
}
return 0;
}
//==========//
void seqlist::print(int size) {
cout<<"顺序表:"<<endl;
for (int i=1;i<=size;i++){
{cout<<data[i-1]<<" ";}
}
cout<<endl<<endl;
}
源文件:
#include<iostream>
#include"seqlist.h"
using namespace std;
void main()
{
int n=0,i=0,j=0,c=0;
seqlist s;
do{
cout<<"1、新建顺序表"<<endl;
cout<<"2、插入元素"<<endl;
cout<<"3、删除元素"<<endl;
cout<<"4、查找元素"<<endl;
cout<<"5、修改元素"<<endl;
cout<<"7、输出顺序表"<<endl;
cout<<"0、结束"<<endl;
cout<<"请选择(0-7):"<<endl;
cin>>c;
switch(c)
{
case 1:
cout<<"将输入的元素个数:";
cin>>len;
s.input(len);
s.print(len);
break;
case 2:
cout<<"请输入一个要插入的元素:"<<endl;
cin>>x;
cout<<"请输入要插入元素的位置:"<<endl;
cin>>i;
s.insert(data[x],i);
s.print(len);
break;
case 3:
cout<<"请输入一个要删除的元素的位置:"<<endl;
cin>>i;
s.Delete(i);
s.print(len);
break;
case 4:
cout<<"请输入一个要查找的元素:"<<endl;
cin>>j;
s.locate(j);//指针???
break;
case 5:
cout<<"请输入一个要修改的元素:"<<endl;
cin>>a;
cout<<"请输入修改后的元素:"<<endl;
cin>>b;
s.change(a,b);
s.print(len);
break;
case 7:
s.print(len);
}
}while(c!=0);
}
求大神解答> < 展开
3个回答
展开全部
//头文件seqlist.h:
#ifndef SEQLIST_H
#define SEQLIST_H
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int datatype;
const int maxlen=100;
class seqlist{
private:
datatype data[maxlen];
int len;
public:
seqlist(void);
int input(int len);
~seqlist(void);
int length(void) const;
datatype get(int i) const;
int locate(datatype & item) const;
int insert(const datatype & item,int i);
int change(int x,int y);
datatype Delete(int i);
int empty(void)const;
void clear(void);
void print();
};
#endif
seqlist::seqlist():len(0)
{
len=0;
}
seqlist::~seqlist(void){}
int seqlist::input(int s)
{
datatype x;
len=s;
for(int i=1;i<=len;i++)
{
cout<<"请输入第"<<i<<"个元素:";
cin>>x;
data[i-1]=x;
}
cout<<endl;
return 0;
}
int seqlist::length(void)const{return len;}
//==========以下几段都有问题==========//
int seqlist::insert(const datatype & item,int i)
{
if(len>=maxlen)
return 0;
if(i<1||i>len+1)
return 0;
for(int j=len;j>=i-1;j--)
{
data[j]=data[j-1];
}
len++;
data[i-1]=item;
return 1;
}
datatype seqlist::Delete(int i)
{
int j;
if ((i<1)||(i>len)){cout<<"位置超界!"<<endl;}
else if(len==0){cout<<"空表不能删除"<<endl;}
datatype t=data[i-1];
for (j=i;j<len;j++)
{
data[j-1]=data[j];
}
len--;
return t;
}
int seqlist::locate(datatype&item)const{
int i=1;
for(i=1;i<=len;i++)
{
if (data[i-1]==item)
{
cout<<"此元素在第"<<i<<"个位置上"<<endl;
}
}
if(i>len)
{
cout<<"抱歉,您所查找的值并不存在"<<endl<<endl;
}
return i;
}
int seqlist::empty(void)const{if(len==0){cout<<"此表为空表"<<endl;} return 1;}
void seqlist::clear(void){len=0;}
datatype seqlist::get(int i)const{
if(i>=1&&i<=len) return data[i-1];
//return NULL;
}
int seqlist::change(int x,int y)
{
for(int j=1;j<=len;j++)
{
if (data[j]==x)
data[j]=y;
}
return 0;
}
//==========//
void seqlist::print()
{
cout<<"顺序表:"<<endl;
for (int i=1;i<=len;i++)
{
cout<<data[i-1]<<" ";
}
cout<<endl<<endl;
}
#include<iostream>
#include"seqlist.h"
using namespace std;
int main()
{
int n=0,i=0,j=0,c=0;
seqlist s;
do
{
cout<<"1、新建顺序表"<<endl;
cout<<"2、插入元素"<<endl;
cout<<"3、删除元素"<<endl;
cout<<"4、查找元素"<<endl;
cout<<"5、修改元素"<<endl;
cout<<"7、输出顺序表"<<endl;
cout<<"0、结束"<<endl;
cout<<"请选择(0-7):"<<endl;
cin>>c;
switch(c)
{
case 1:
cout<<"将输入的元素个数:";
int len;
cin>>len;
s.input(len);
s.print();
break;
case 2:
cout<<"请输入一个要插入的元素:"<<endl;
int x;
cin>>x;
cout<<"请输入要插入元素的位置:"<<endl;
cin>>i;
s.insert(x,i);
s.print();
break;
case 3:
cout<<"请输入一个要删除的元素的位置:"<<endl;
cin>>i;
s.Delete(i);
s.print();
break;
case 4:
cout<<"请输入一个要查找的元素:"<<endl;
cin>>j;
s.locate(j);//指针???
break;
case 5:
cout<<"请输入一个要修改的元素:"<<endl;
int a;
cin>>a;
cout<<"请输入修改后的元素:"<<endl;
int b;
cin>>b;
s.change(a,b);
s.print();
break;
case 7:
s.print();
}
}
while(c!=0);
}
试试吧.可以运行,不过啦,代码是在太烂了,看起来比写起来还费劲,里面可能还有逻辑错误,你自己在慢慢看吧,还有链表的元素只能为int型,其他类型的要再修改完善,
我有链表类头文件,如果要,留邮箱
#ifndef SEQLIST_H
#define SEQLIST_H
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int datatype;
const int maxlen=100;
class seqlist{
private:
datatype data[maxlen];
int len;
public:
seqlist(void);
int input(int len);
~seqlist(void);
int length(void) const;
datatype get(int i) const;
int locate(datatype & item) const;
int insert(const datatype & item,int i);
int change(int x,int y);
datatype Delete(int i);
int empty(void)const;
void clear(void);
void print();
};
#endif
seqlist::seqlist():len(0)
{
len=0;
}
seqlist::~seqlist(void){}
int seqlist::input(int s)
{
datatype x;
len=s;
for(int i=1;i<=len;i++)
{
cout<<"请输入第"<<i<<"个元素:";
cin>>x;
data[i-1]=x;
}
cout<<endl;
return 0;
}
int seqlist::length(void)const{return len;}
//==========以下几段都有问题==========//
int seqlist::insert(const datatype & item,int i)
{
if(len>=maxlen)
return 0;
if(i<1||i>len+1)
return 0;
for(int j=len;j>=i-1;j--)
{
data[j]=data[j-1];
}
len++;
data[i-1]=item;
return 1;
}
datatype seqlist::Delete(int i)
{
int j;
if ((i<1)||(i>len)){cout<<"位置超界!"<<endl;}
else if(len==0){cout<<"空表不能删除"<<endl;}
datatype t=data[i-1];
for (j=i;j<len;j++)
{
data[j-1]=data[j];
}
len--;
return t;
}
int seqlist::locate(datatype&item)const{
int i=1;
for(i=1;i<=len;i++)
{
if (data[i-1]==item)
{
cout<<"此元素在第"<<i<<"个位置上"<<endl;
}
}
if(i>len)
{
cout<<"抱歉,您所查找的值并不存在"<<endl<<endl;
}
return i;
}
int seqlist::empty(void)const{if(len==0){cout<<"此表为空表"<<endl;} return 1;}
void seqlist::clear(void){len=0;}
datatype seqlist::get(int i)const{
if(i>=1&&i<=len) return data[i-1];
//return NULL;
}
int seqlist::change(int x,int y)
{
for(int j=1;j<=len;j++)
{
if (data[j]==x)
data[j]=y;
}
return 0;
}
//==========//
void seqlist::print()
{
cout<<"顺序表:"<<endl;
for (int i=1;i<=len;i++)
{
cout<<data[i-1]<<" ";
}
cout<<endl<<endl;
}
#include<iostream>
#include"seqlist.h"
using namespace std;
int main()
{
int n=0,i=0,j=0,c=0;
seqlist s;
do
{
cout<<"1、新建顺序表"<<endl;
cout<<"2、插入元素"<<endl;
cout<<"3、删除元素"<<endl;
cout<<"4、查找元素"<<endl;
cout<<"5、修改元素"<<endl;
cout<<"7、输出顺序表"<<endl;
cout<<"0、结束"<<endl;
cout<<"请选择(0-7):"<<endl;
cin>>c;
switch(c)
{
case 1:
cout<<"将输入的元素个数:";
int len;
cin>>len;
s.input(len);
s.print();
break;
case 2:
cout<<"请输入一个要插入的元素:"<<endl;
int x;
cin>>x;
cout<<"请输入要插入元素的位置:"<<endl;
cin>>i;
s.insert(x,i);
s.print();
break;
case 3:
cout<<"请输入一个要删除的元素的位置:"<<endl;
cin>>i;
s.Delete(i);
s.print();
break;
case 4:
cout<<"请输入一个要查找的元素:"<<endl;
cin>>j;
s.locate(j);//指针???
break;
case 5:
cout<<"请输入一个要修改的元素:"<<endl;
int a;
cin>>a;
cout<<"请输入修改后的元素:"<<endl;
int b;
cin>>b;
s.change(a,b);
s.print();
break;
case 7:
s.print();
}
}
while(c!=0);
}
试试吧.可以运行,不过啦,代码是在太烂了,看起来比写起来还费劲,里面可能还有逻辑错误,你自己在慢慢看吧,还有链表的元素只能为int型,其他类型的要再修改完善,
我有链表类头文件,如果要,留邮箱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
你这问题能问的明确点不?这么长的代码看的好费劲哪- -
我大致看了下你的代码,发现有以下几点问题(没有去运行,不保证没遗漏)
insert没有错误信息
Delete错误信息输出了,但没返回,这个问题可以导致程序崩溃
Change函数定义有问题,传进去x,y;函数体内部没见到用过,定义的a,b没有意义
然后你好像对locate不理解
它的作用是在列表中查找你所传入的参数得位置,不存在就输出错误信息,并不是指针
追问
程序可以运行 但输出的时候 case2~case5都没作用
的确不是很了解datatype&item怎么用> <
追答
datatype& 是表示引用,它可以让几个变量指向同一块内存里的值,一个改变其他都会改变
datatype* 是表示指针,它可以让几个变量指向同一块内存
你直接写个简单的例子测试一下就知道了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
queue.Delete(1)在一个恒定
删除(类型&X)的参数参考
定义一个自定义的变量T = 1
然后queue.Delete(T);
删除(类型&X)的参数参考
定义一个自定义的变量T = 1
然后queue.Delete(T);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询