求数据结构以及C++方面的大神指导。
程序:#include<time.h>#include<iostream>#include<iomanip>usingnamespacestd;//要排序的数组的长度,以...
程序:
#include <time.h>
#include <iostream>
#include <iomanip>
using namespace std;
//要排序的数组的长度,以及取值的范围
#define SIZE 10
#define MAX 10000
//-------线性表的动态分配顺序存储结构-------
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
#define OVERFLOW 100
#define OK 1
#define ERROR 0
typedef int ElemType[LIST_INIT_SIZE];
typedef int Status;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList &L){
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;}
Status ListDelete_Sq(SqList &L,ElemType &item){ //D:\数据结构\课程设计\第二章第一题.cpp in passing argument 1 of `Status ListDelete_Sq(SqList&, int (&)[100])'
int *p,*q;
for(int i=0;i<L.length;i++){
if(L.elem[i]==item){
p=&(L.elem[i-1]); //D:\数据结构\课程设计\第二章第一题.cpp cannot convert `int (*)[100]' to `int*' in assignment
int e=*p;
q=L.elem+L.length-1; // D:\数据结构\课程设计\第二章第一题.cpp cannot convert `int (*)[100]' to `int*' in assignment
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return OK;}}}
//打印数组
int printarr(int arr[],int len){
for(int i=0;i<len;i++){
if(i%10==0)
cout<<endl;
cout<<setw(4)<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
int main()
{
int arr[SIZE];
int len = sizeof(arr)/sizeof(arr[0]);//SIZE
srand( (unsigned)time( NULL ) );
for(int i=0;i<len;i++){
arr[i] =rand()%MAX;
}
cout<<"生成数组:"<<endl;
printarr(arr,len);
ListDelete_Sq(arr,arr[0]); //D:\数据结构\课程设计\第二章第一题.cpp invalid initialization of non-const reference of type 'SqList&' from a temporary of type 'int*'
cout<<"删除元素值等于arr[0]的元素后的线性表"<<endl;
printarr(arr,len);
system("pause");
return 0;
}
devc++4.9.9.2编译显示错误如每一行后面注释。
我该怎么改。编译通过了立马给分。 展开
#include <time.h>
#include <iostream>
#include <iomanip>
using namespace std;
//要排序的数组的长度,以及取值的范围
#define SIZE 10
#define MAX 10000
//-------线性表的动态分配顺序存储结构-------
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
#define OVERFLOW 100
#define OK 1
#define ERROR 0
typedef int ElemType[LIST_INIT_SIZE];
typedef int Status;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList &L){
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;}
Status ListDelete_Sq(SqList &L,ElemType &item){ //D:\数据结构\课程设计\第二章第一题.cpp in passing argument 1 of `Status ListDelete_Sq(SqList&, int (&)[100])'
int *p,*q;
for(int i=0;i<L.length;i++){
if(L.elem[i]==item){
p=&(L.elem[i-1]); //D:\数据结构\课程设计\第二章第一题.cpp cannot convert `int (*)[100]' to `int*' in assignment
int e=*p;
q=L.elem+L.length-1; // D:\数据结构\课程设计\第二章第一题.cpp cannot convert `int (*)[100]' to `int*' in assignment
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return OK;}}}
//打印数组
int printarr(int arr[],int len){
for(int i=0;i<len;i++){
if(i%10==0)
cout<<endl;
cout<<setw(4)<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
int main()
{
int arr[SIZE];
int len = sizeof(arr)/sizeof(arr[0]);//SIZE
srand( (unsigned)time( NULL ) );
for(int i=0;i<len;i++){
arr[i] =rand()%MAX;
}
cout<<"生成数组:"<<endl;
printarr(arr,len);
ListDelete_Sq(arr,arr[0]); //D:\数据结构\课程设计\第二章第一题.cpp invalid initialization of non-const reference of type 'SqList&' from a temporary of type 'int*'
cout<<"删除元素值等于arr[0]的元素后的线性表"<<endl;
printarr(arr,len);
system("pause");
return 0;
}
devc++4.9.9.2编译显示错误如每一行后面注释。
我该怎么改。编译通过了立马给分。 展开
3个回答
展开全部
typedef int ElemType[LIST_INIT_SIZE];
改成
typedef int ElemType;
ListDelete_Sq要求第一个参数是Sqlist,但你在main中传的却是arr这个整型数组
改成
typedef int ElemType;
ListDelete_Sq要求第一个参数是Sqlist,但你在main中传的却是arr这个整型数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef int ElemType[LIST_INIT_SIZE];
用不着定义成这样吧, 定义成typedef int ElemType;就够了
用不着定义成这样吧, 定义成typedef int ElemType;就够了
追问
这样解决了指针那里的问题。但是还有一个地方就是在主函数里实现ListDelete_Sq函数的时候还有点问题该怎么改呢
追答
ListDelete_Sq(SqList &L,ElemType &item);这个函数要求传的参数是SqList类型的,你传的是一个int类型的数组,当然不行啦,你应该在开始的时候建立SqList类型的数据而不是int类型的数组,如SqList aa;然后对aa中的elem数组赋值
当然后面的printarr(arr,len); 传参数就是printarr(aa.elem,aa.length);
嗯,我给你写主函数部分:
int main()
{
SqList aa;
InitList_Sq(aa);
int len = SIZE;
aa.length = len;
for(int i=0;i<len;i++){
aa.elem[i] =rand()%MAX;
}
cout<<"生成数组:"<<endl;
printarr(aa.elem,aa.length);
ListDelete_Sq(aa.elem,aa.elem[0]);
cout<<"删除元素值等于"<<aa.elem[0]<<"的元素后的线性表"<<endl;
printarr(aa.elem,aa.length);
system("pause");
return 0;
}
这样你在试试
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef int ElemType[LIST_INIT_SIZE];
typedef int Status;
这两句干吗的??
typedef int Status;
这两句干吗的??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询