标题:线性表的简单实现的问题
只看楼主
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
 问题点数:0 回复次数:7 
线性表的简单实现的问题

好多错误,帮忙改下啊
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define list_init_size 100
#define listincrement 10
struct Sqlist{
int *elem;
int length;
int listsize;
};
void AgainMalloc(Sqlist &L)
{
int *p=(int *)realloc(L->elem,2*list_init_size*sizeof(int));
if(!p)
{
printf("存储空间分配失败!!");
exit(1);
}
L.elem=p;
L.listsize=2*L.listsize;
}
/* 初始化线性表L,即进行动态存储空间分配并置L为一个空表 */
void InitList_Sq(Sqlist &L)
{
L.elem=(int *)malloc(list_init_size*sizeof(int));
if(!L.elem)exit(1);
L.length=0;
L.listsize=0;
}//InitList_Sq
/* 清除线性表L中的所有元素,释放存储空间,使之成为一个空表 */
void clearList(Sqlist &L)
{
if(L->elem !=NULL)
{
free(L->elem);
L->elem=0;
L->length=0;
L->listincrement=0;
}
}
/* 返回线性表L当前的长度,若L为空则返回0 */
int Sizelist(Sqlist &L)
{
return L->length;
}
/* 判断线性表L是否为空,若为空则返回1, 否则返回0 */
int Emptylist(Sqlist &L)
{
if(L->length==0)return 1;
return 0;
}

/* 返回线性表L中第pos个元素的值,若pos超出范围,则停止程序运行 */
int Getelem(Sqlist &L,int pos)
{
if(pos<1 || pos>L->size)
{
printf("元素序号越界!");
exit(1);
}
return L->elem[pos-1];
}

/* 顺序扫描(即遍历)输出线性表L中的每个元素 */
void Traversqlist(Sqlist &L)
{
for(int i=0;i<L->length;i++)
printf("%d",L->elem[i]);
}


/* 向线性表L的表尾插入元素x */
void Insertlist(Sqlist &L,int x)
{
if(L->length == L->listsize)Againmalloc(L);
L->elem[L->length]=x;
L->length++;
}

/************************************************************************/
int main()
{
int a[10]={2,5,24,86,92,41,73,26,58,56};
struct Sqlist L;
InitList_Sq(L);
for(int i=0;i<10;i++)
{
Insertlist(L,a[i]);
}
Traversqlist(L);
return 0;
}

搜索更多相关主题的帖子: 线性 int elem include listsize 
2007-11-02 21:06
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
得分:0 

先把你的语法错误更正,功能性的你自己验证吧。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define list_init_size 100
#define listincrement 10
struct Sqlist{
int *elem;
int length;
int listsize;
};
void AgainMalloc(Sqlist &L)
{
int *p=(int *)realloc(L.elem,2*list_init_size*sizeof(int));
if(!p)
{
printf("存储空间分配失败!!");
exit(1);
}
L.elem=p;
L.listsize=2*L.listsize;
}
/* 初始化线性表L,即进行动态存储空间分配并置L为一个空表 */
void InitList_Sq(Sqlist &L)
{
L.elem=(int *)malloc(list_init_size*sizeof(int));
if(!L.elem)exit(1);
L.length=0;
L.listsize=0;
}//InitList_Sq
/* 清除线性表L中的所有元素,释放存储空间,使之成为一个空表 */
void clearList(Sqlist &L)
{
if(L.elem !=NULL)
{
free(L.elem);
L.elem=0;
L.length=0;
L.listsize=0;
}
}
/* 返回线性表L当前的长度,若L为空则返回0 */
int Sizelist(Sqlist &L)
{
return L.length;
}
/* 判断线性表L是否为空,若为空则返回1, 否则返回0 */
int Emptylist(Sqlist &L)
{
if(L.length==0)return 1;
return 0;
}

/* 返回线性表L中第pos个元素的值,若pos超出范围,则停止程序运行 */
int Getelem(Sqlist &L,int pos)
{
if(pos<1 || pos>L.listsize)
{
printf("元素序号越界!");
exit(1);
}
return L.elem[pos-1];
}

/* 顺序扫描(即遍历)输出线性表L中的每个元素 */
void Traversqlist(Sqlist &L)
{
for(int i=0;i<L.length;i++)
printf("%d",L.elem[i]);
}


/* 向线性表L的表尾插入元素x */
void Insertlist(Sqlist &L,int x)
{
if(L.length == L.listsize)AgainMalloc(L);
L.elem[L.length]=x;
L.length++;
}

/************************************************************************/
int main()
{
int a[10]={2,5,24,86,92,41,73,26,58,56};
struct Sqlist L;
InitList_Sq(L);
for(int i=0;i<10;i++)
{
Insertlist(L,a[i]);
}
Traversqlist(L);
return 0;
}

2007-11-03 07:52
心梦
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-6-25
得分:0 
2007-11-04 00:37
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
得分:0 

太谢谢zxc1998了
你把 -> 改为 . 了吧
为什么不能用 -> 啊
->用于指针吧


上善若水,水善利万物而不争,处众人之所恶
2007-11-09 15:01
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
得分:0 
问一个
C语言中支持这种函数原型吗?

void AgainMalloc(Sqlist &L)

从哪个版本?什么时候?开始支持的?


人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-09 16:07
jxj777
Rank: 1
等 级:新手上路
帖 子:91
专家分:0
注 册:2007-10-27
得分:0 

顶5楼
应该属于引用,C里面不支持吧,

[此贴子已经被作者于2007-11-12 18:55:21编辑过]


一个人的力量是缈小的....... 互帮互助才是出路
2007-11-12 18:54
dengyixinos
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-11-17
得分:0 
C不支持引用
2007-11-19 12:08
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 
C99 标准支持引用,所以支持C99标准的C编译器可以使用引用


英者自知,雄者自胜
2007-11-19 12:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-183000-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.930149 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved