标题:[求助]关于线性表
只看楼主
nofarewell
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-5-14
 问题点数:0 回复次数:8 
[求助]关于线性表

编写了一些在顺序表上的操作,再写了一个主函数初始化,建立顺序表,再输出表中各数据结点的值,发现有错误,输不出来,检查半天又不知道毛病出在哪,麻烦大家帮我看看原因出在哪?
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 100
typedef char Elemtype;
typedef struct //定义顺序存储的线情表,数据结点存放在data数组,表长度为length
{
Elemtype data[MAXSIZE];
int length;
}sqlist;
void CreateList(sqlist *&L,Elemtype a[],int n) //构造线性表,传递一个数组和数组长度
{
for(int i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
}
void InitList(sqlist *&L) //初始化线性表(构造一个空的线性表
{
L=(sqlist *)malloc(sizeof(sqlist));
L->length=0;
}
void DestroyList(sqlist *&L) //销毁线性表
{
free(L);
}
int ListEmpty(sqlist *L) //判断表是否为空表
{
return (L->length=0);
}
int ListLength(sqlist *L) //取表的长度
{
return (L->length);
}
void DispList(sqlist *L) //输出线性表的数据结点
{
if(ListEmpty(L))
return;
for(int i=0;i<L->length;i++)
printf("%c",L->data[i]);
printf("\n");
}
int main() //主函数部份
{
sqlist *mysqlist; //定义一个sqlist型指针mysqlist,作为各种表操作的参数
InitList(mysqlist); //初始化
const int m=5;
Elemtype ch[]={'a','b','c','d','e'};
CreateList(mysqlist,ch,m); //传递字符数组ch和长度m,构造一个线性表mysqlist
DispList(mysqlist); //输出mysqlist的数据结点
DestroyList(mysqlist); //销毁mysqlist
return 0;
}

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

搜索更多相关主题的帖子: 线性表 结点 顺序 data typedef 
2007-11-17 21:57
nofarewell
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-5-14
得分:0 
麻烦哪位帮我看看啊,实在想不出个所以然。先用InitList函数初始化,则DispList时候输出空白,不用InitList直接CreateList,则DispList时程序非法中断 想得头疼,SOS呼叫
2007-11-18 12:44
nofarewell
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-5-14
得分:0 
SOS
2007-11-18 20:21
nofarewell
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-5-14
得分:0 
没人帮忙?
2007-11-18 22:10
feibiaili
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-11-17
得分:0 
void CreateList(sqlist *&L,Elemtype a[],int n)
{
for(int i=0;i<n;i++)
L->data=a;//这里赋值语句是错误的应改为L->data[i]=a[i];
L->length=n;
}
另外显示不出来的主要原因是DispList(sqlist *L) 函数里的for(int i=0;i<L->length;i++)
printf("%c",L->data);语句不合适,可以将for...printf改为printf("%s,L->data);再在上面的CreateList函数修改
如下:

void CreateList(sqlist *&L,Elemtype a[],int n){//构造线性表,传递一个数组和数组长度
    for(int i=0;i<n;i++)
    L->data[i]=a[i];
    L->data[i]='\0';
    L->length=n;
}
我不知道printf函数%c的用法,不过错误就在这里
2007-11-22 20:01
feibiaili
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-11-17
得分:0 
........................好像中括号[]我打不出来,是我弄错了
2007-11-22 20:02
feibiaili
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-11-17
得分:0 
应该是L->data[i]=a[i];
2007-11-22 20:03
feibiaili
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-11-17
得分:0 
L->data[i]=a[i];
2007-11-22 20:04
feibiaili
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-11-17
得分:0 
可怜的中括号打不出来
2007-11-22 20:04



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




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

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