2 dongcx1234567 dongcx1234567 于 2013.10.19 01:15 提问

数据结构函数的问题求解

如果这是一个一个结构体。
typedef struct list
{
struct list *prior ;
struct list *next;
int num;
} list,*dlist;

问题1:比如我写一个创建函数,我通常是void create_list(dlist L,int n);
但是我看有的地方括号里面的第一个形参不是星号,而是&,麻烦跟我讲一下。是不是传递的不是指针,是一个对象名的引用?是不是对顺序链表这么做好一点?
问题2:上次还有人跟我说第一个形参要用二次指针,否则必须return L;才能改动L;但是我没有这么做也是对的,麻烦帮我解释一下
问题3:关于头节点,那个num是不是不用赋值,或者赋值为0或者其他?为什么啊?
问题4:同样是创建函数,我看有的地方写的是void create_list(L,n)
dlist L;int n;{

}我查了下说以前的标准支持这么写,我们老师给我们的代码中也有这么写的。昨天一个研究生让我重看一遍C语言。太打击人了。虽然我不这么定义。

1个回答

lym753024200
lym753024200   2013.10.19 11:54
已采纳

你既然知道引用就知道C++,既然会C++,就不要用C来写数据结构,用C很蹩脚,C++中用类来实现非常方便,先看你到底要用什么语言,说了我再给你慢点解释。

lym753024200
lym753024200 都是我一个人回答的,哪里还有你们这个说法。。。-.-!
大约 4 年之前 回复
dongcx1234567
dongcx1234567 感谢你们
大约 4 年之前 回复
lym753024200
lym753024200 最后:对于你的变量命名,应该用plist,表示指向list的指针(p代表pointer),记得用匈牙利命名法。如果还有不懂就提出来等下再回答你。
大约 4 年之前 回复
lym753024200
lym753024200 问题4:C的话就要按照C99标准,你好像是研究生,中国的一些书籍都太陈旧,你们老师都是些古董,你是新时代的接班人,你知道中国在这方面落后外国多少年么?还不就是这些书记惹得祸!你要按照新标准,希望我国IT水平能因为你们而超越时代!
大约 4 年之前 回复
lym753024200
lym753024200 问题3:链表如果增加一个头节点,那么头节点的数据域一般用来保存链表的大小,也就是相当于你的链表结构重的int num成员的功能。如果你增加了这个成员来存储链表大小,那么头节点数据域就可以不用赋值;如果你去掉int num,那就需要了。另外增加头节点还有一个好处就是方便增加和删除节点时候的代码编写。
大约 4 年之前 回复
lym753024200
lym753024200 问题2:那个是说的是错的,有些书本的作者也是二次指针,其实是写错了,一次指针就够了,这个我就不解释了。
大约 4 年之前 回复
lym753024200
lym753024200 对于较大的数据(比如较大的结构等),传递地址或者引用(C++中)省时间,程序运行速度快,对于基本变量,习惯上按值传递。这个和是不是链表无关,关键看传递的内容的大小,因为按值传递是要重新复制一个是实参的副本的。
大约 4 年之前 回复
lym753024200
lym753024200 问题1:C中是没有引用的,你说你到看的地方括号里面的第一个形参不是星号,我不知道你说函数声明还是调用,如果是声明那就是作者写错了或者是伪代码,这个你把代码弄出来我看下再给你解释!
大约 4 年之前 回复
dongcx1234567
dongcx1234567 我是用的c,正在学习c++。我也不想啊,可是学校里面的数据结构就用c。。
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!