求数据结构以及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编译显示错误如每一行后面注释。
我该怎么改。编译通过了立马给分。
展开
 我来答
忘至白葬不情必0T
2011-12-29 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
typedef int ElemType[LIST_INIT_SIZE];
改成
typedef int ElemType;

ListDelete_Sq要求第一个参数是Sqlist,但你在main中传的却是arr这个整型数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love_zhai
2011-12-29 · TA获得超过111个赞
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:101万
展开全部
typedef int ElemType[LIST_INIT_SIZE];
用不着定义成这样吧, 定义成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;
}

这样你在试试
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weichang0829
2011-12-29 · TA获得超过4764个赞
知道大有可为答主
回答量:2966
采纳率:33%
帮助的人:1012万
展开全部
typedef int ElemType[LIST_INIT_SIZE];
typedef int Status;
这两句干吗的??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式