C语言,数据结构错误
//头文件#include"stdio.h"#include<stdlib.h>#include"conio.h"#definemaxsize10typedefintel...
//头文件
#include"stdio.h"
#include<stdlib.h>
#include"conio.h"
#define maxsize 10
typedef int elemtype;//将int定义为eletype
typedef struct{
int *elem;
int length;
int listsize;
}sqlist;
void initsqlist (sqlist *l);
void insertelem (sqlist *l,int i,int y );//此处有误
void delelem (sqlist *l,int i);//* 指针运算符
//main函数
#include<stdio.h>
#include"define.h"
/*测试函数*/
main()
{
sqlist l;
int i,d;
initsqlist(&l);//初始化一个顺序表
for(i=0;i<=15;i++)//此处有误,无法插入三个数
insertelem (&l,i+1,i+1) ;//向顺序表中插入1...15
printf("\n The content of the list is:\n");
for(i=0;i<l.length;i++)
printf("%d",l.elem[i]);//打印顺序表中的内容
printf("Want to delete which a number? \n");
printf("plese enter number's order\n");//选择需要删除的位置
scanf("%d",&d);
delelem(&l,d);
printf("\n delete the 5th element\n");
for(i=0;i<l.length;i++)
printf("%d",l.elem[i]);
getche();
return 0;
}
//测试
#include<stdio.h>
#include"define.h"
//初始化线性表
//参数l:sqlist类型的指针
void initsqlist(sqlist *l){
l->elem=(int *)malloc(maxsize*sizeof(elemtype));
if(!l->elem) exit(0);
l->length =0;
l->listsize=maxsize;
}
//向顺序表中插入元素
//参数l:sqlist类型的指针
//参数i:插入元素的位置
//参数item:插入的元素
void insertelem(sqlist *l,int i,elemtype item){
//向顺序表L中第I个位置插入元素 item
elemtype *base,* insertptr,*p;
if(i<1 || i>l->length+1)
exit (0);
if(l->length >= l->listsize)
{
base=(elemtype*)realloc(l->elem,(l->listsize+10)*sizeof
(elemtype));
l->elem=base;
l->listsize=l->listsize+100;
}
insertptr=&(l->elem[i-1]);
for(p=&(l->elem[l->length-1]);p>= insertptr;p--)
*(p+1)=*p;
*insertptr=item;
l->length++;
}
//从顺序表中删除元素
//参数L:sqlist类型的指针
//参数i:删除元素的位置
void delelem (sqlist *l,int i){
//从顺序表l中删除输入位置的数
elemtype *delitem, *q;
if(i<1 || i>l->length) exit(0);
delitem=&(l->elem[i-1]);
q=l->elem+l->length-1;
for(++delitem; delitem<=q;++ delitem)*( delelem-1)=* delelem;
l->length--;
}
编译时出现如下错误:
--------------------Configuration: 顺序线性表 - Win32 Debug--------------------
Compiling...
list.cpp
D:\360云盘\文档\数据结构\实验一 线性表及其应用\顺序线性表\list.cpp(45) : error C2296: '-' : illegal, left operand has type 'void (__cdecl *)(sqlist *,int)'
执行 cl.exe 时出错.
list.obj - 1 error(s), 0 warning(s)
?????那错了呢? 展开
#include"stdio.h"
#include<stdlib.h>
#include"conio.h"
#define maxsize 10
typedef int elemtype;//将int定义为eletype
typedef struct{
int *elem;
int length;
int listsize;
}sqlist;
void initsqlist (sqlist *l);
void insertelem (sqlist *l,int i,int y );//此处有误
void delelem (sqlist *l,int i);//* 指针运算符
//main函数
#include<stdio.h>
#include"define.h"
/*测试函数*/
main()
{
sqlist l;
int i,d;
initsqlist(&l);//初始化一个顺序表
for(i=0;i<=15;i++)//此处有误,无法插入三个数
insertelem (&l,i+1,i+1) ;//向顺序表中插入1...15
printf("\n The content of the list is:\n");
for(i=0;i<l.length;i++)
printf("%d",l.elem[i]);//打印顺序表中的内容
printf("Want to delete which a number? \n");
printf("plese enter number's order\n");//选择需要删除的位置
scanf("%d",&d);
delelem(&l,d);
printf("\n delete the 5th element\n");
for(i=0;i<l.length;i++)
printf("%d",l.elem[i]);
getche();
return 0;
}
//测试
#include<stdio.h>
#include"define.h"
//初始化线性表
//参数l:sqlist类型的指针
void initsqlist(sqlist *l){
l->elem=(int *)malloc(maxsize*sizeof(elemtype));
if(!l->elem) exit(0);
l->length =0;
l->listsize=maxsize;
}
//向顺序表中插入元素
//参数l:sqlist类型的指针
//参数i:插入元素的位置
//参数item:插入的元素
void insertelem(sqlist *l,int i,elemtype item){
//向顺序表L中第I个位置插入元素 item
elemtype *base,* insertptr,*p;
if(i<1 || i>l->length+1)
exit (0);
if(l->length >= l->listsize)
{
base=(elemtype*)realloc(l->elem,(l->listsize+10)*sizeof
(elemtype));
l->elem=base;
l->listsize=l->listsize+100;
}
insertptr=&(l->elem[i-1]);
for(p=&(l->elem[l->length-1]);p>= insertptr;p--)
*(p+1)=*p;
*insertptr=item;
l->length++;
}
//从顺序表中删除元素
//参数L:sqlist类型的指针
//参数i:删除元素的位置
void delelem (sqlist *l,int i){
//从顺序表l中删除输入位置的数
elemtype *delitem, *q;
if(i<1 || i>l->length) exit(0);
delitem=&(l->elem[i-1]);
q=l->elem+l->length-1;
for(++delitem; delitem<=q;++ delitem)*( delelem-1)=* delelem;
l->length--;
}
编译时出现如下错误:
--------------------Configuration: 顺序线性表 - Win32 Debug--------------------
Compiling...
list.cpp
D:\360云盘\文档\数据结构\实验一 线性表及其应用\顺序线性表\list.cpp(45) : error C2296: '-' : illegal, left operand has type 'void (__cdecl *)(sqlist *,int)'
执行 cl.exe 时出错.
list.obj - 1 error(s), 0 warning(s)
?????那错了呢? 展开
3个回答
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
lz的最后一个函数 void delelem (sqlist *l,int i) 有问题。
就是这句:
for(++delitem; delitem<=q;++ delitem)*( delelem-1)=* delelem;
循环体内的delelem是函数指针,不是你自己定义的elemtype指针变量delitem。。。
应该是
for(++delitem; delitem<=q;++ delitem)*( delilem-1)=* dilelem;
就是这句:
for(++delitem; delitem<=q;++ delitem)*( delelem-1)=* delelem;
循环体内的delelem是函数指针,不是你自己定义的elemtype指针变量delitem。。。
应该是
for(++delitem; delitem<=q;++ delitem)*( delilem-1)=* dilelem;
追问
没差啊
追答
for的括号里面没错,循环体里错了,
改成
*( delitem-1)=* dilitem;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是因为你那个生明是指针,而你传进去的是地址呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询