| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1238 人关注过本帖
标题:[贴图]有关线形表求助~
只看楼主 加入收藏
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
 问题点数:0 回复次数:19 
[贴图]有关线形表求助~

我是个初学者,但希望能得到这里的热心人的帮助,也许女生在这方面的却少了点触角,但我相信学问学问,边学边问,会有气色的,可能问题比较简单幼稚,但现在的确困扰我,我想一定有人会且愿意帮我纠正错误的地方吧,先谢谢大家~ #define OK 1 #define INIT_LIST_SIZE 100 #include "stdio.h" #include "stdlib.h"

typedef struct {int *elem; struct sqlist{int *elem; int length; int length; int listsize;}Sqlist; int listsize;}L; 问题一:这两种定义都可以吗?有什么区别吗?

initsqlist(Sqlist &L)----------问题2:为什么有的定义不用写&L,L与&L让我很困惑;且有的人定义时是这样写的:initsqlist(struct sqlist L),他这样写对吗?这个struct 什么时候要写什么时候不要写呢?? {L.elem=(int *)malloc(50*sizeof(int)); if(!L.elem) exit(-1); L.length=0; L.listsize=INIT_LIST_SIZE; return OK;}

insertlist(Sqlist &L) {int j,k; printf("please input 5 numbers:"); for(j=0;j<5;j++) {++L.length; scanf("%d",L.elem+j); }

printlist(Sqlist &L) {int i; printf("the numbers of list la is:"); for(i=0;i<L.length;i++) printf(" %d ",*(L.elem+i)); }

void main() {Sqlist la; initsqlist(&la); insertlist(&la); printlist(&la);} 程序就这么多,运行时出错,改不全对,请各位帮帮我,初学问的问题都有点怪,见谅! 请帮帮我,急!!!!!!

搜索更多相关主题的帖子: int 贴图 length define 
2005-09-20 13:51
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
得分:0 

#define ok 1 #define LIST_INIT_SIZE 100 #include "stdio.h" #include "stdlib.h" #include "conio.h" typedef struct{int *elem; int length; int listsize;}sqlist;

Initlist(sqlist &L) {L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); if(!L.elem) exit(-1); L.length=0; L.listsize=LIST_INIT_SIZE; return ok; }

Inserlist(sqlist &L) {int i; L.length=0; printf("la.length is %d\t",L.length); printf("input 5 numbers:"); for(i=0;i<5;i++) {++L.length; scanf("%d",L.elem+i); } printf("\nLa.length is : %d",L.length); return ok;}

printlist(sqlist &L) {int i; printf("\nla.elem are:"); for(i=0;i<L.length;i++) printf("%d",*(L.elem+i)); return ok; }

void main() {clrscr(); sqlist la; Initlist(la); Inserlist(la); printlist(la); }


2005-09-20 15:50
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
得分:0 
自己整了半天,整明白啦! 但又有新的问题,以上的程序是线形表的动态顺序存储,如果改成静态顺序存储,那么Initlist初始化函数里的动态分配空间那一行(L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));)该怎么改写呢?
怎么论坛半天没人应啊,急啊!!!!!!!!!

2005-09-20 15:53
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
得分:0 
初学者都来发表下意见啊,大家一起进步!!

2005-10-03 09:23
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
你的程序中#define LIST_INIT_SIZE 100,而用了(L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));)分配空间,也就是说并不是真正的动态存储,本质上就是静态的。

程序和身体一样,健壮,再健壮! 我爱C++
2005-10-03 09:35
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
typedef struct {int *elem;                           struct sqlist{int *elem;
                     int length;                                             int length;
                     int listsize;}Sqlist;                                 int listsize;}L;

问题一:这两种定义都可以吗?有什么区别吗?
当然有区别, 但两种都可以
第1种是说定义一个数据结构Sqlist, 第2种是说定义一个数据结构L;
你后面写的算法都是用的第1种定义,  如果用第2种, 后面的如Inserlist(sqlist &amp;L)  都要改为Inserlist(L &amp;L)

我的征途是星辰大海
2005-10-03 11:54
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
问题2:为什么有的定义不用写&amp;L,L与&amp;L让我很困惑;
不写&amp;L是不希望更改L的值, 而&amp;是取地址操作, 相当于一个指针, 函数中相应的操作会改变L 的值.
可以这么近似的理解, 有&amp;它就是个全局变量, 对他的操作会改变他的值, 没有&amp;他就是个局部变量(或是只读类型的), 不会改变原来的值.

我的征途是星辰大海
2005-10-03 12:01
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
你也应该是学生吧, 上的是教育网吧,
给 你 一个网址去看看 , 是我们学校的数据结构网站,
http://ei.hust.
里面有关于加不加&amp;的详细解答回帖, 是我的老师写的, 肯定比我说的好

我的征途是星辰大海
2005-10-03 12:06
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
得分:0 
很高兴看到有人响应啊~听完有的明白了,还有些新的具体的疑问,请看: 问题1:对于L与&L我明白了,谢谢sky!但有个类似的问题 比如 Initlist( sqlist *L) { (*L).elem=(Elemtype*)malloc(LIST_INIT_SIZE*sizeof(Elemtype)); if(!(*L).elem) exit(OVERFLOW); (*L).length=0;.............} 问题:这里的*L又是怎么回事????

2005-10-03 15:38
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
得分:0 
线形表分为顺序存储和链式存储,而这两类存储方式又都有静态和动态存储,请问下rain如何才是动态和静态呢?举个例好吗?呵呵,谢谢~ Sqlist *L; L=(Sqlist *)malloc(sizeof(Sqlist)); ---------动态分配:不需要预先分配存储空间且分配的空间可以根据程序的需要扩大或缩小。这次我写对了吗?呵呵

[此贴子已经被作者于2005-10-8 9:57:33编辑过]


2005-10-03 15:40
快速回复:[贴图]有关线形表求助~
数据加载中...
 
   



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

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