关于数据结构链表问题

jcjunjin 2009-05-12 10:43:54
头插法函数有两种写法都能运行
第一种:
void creatlist(linklist *&L ,int n)
{
linklist *p;
L=(linklist*)malloc(1);
L->next=NULL;
for(int i=n;i>0;i--)
{
p=(linklist*)malloc(1);
cin>>p->data;
p->next=L->next;
L->next=p;
}
第二种:
void creatlist(linklist &L ,int n)
{
linklist *p;

L.next=NULL;
for(int i=n;i>0;i--)
{
p=(linklist *)malloc(sizeof(linklist));
cin>>p->data;
p->next=L.next;
L.next=p;
}
两者最大的区别就是第二种没有给L分配内存(即红色区域所示),请问为什么?
...全文
75 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
teleinfor 2009-05-12
  • 打赏
  • 举报
回复

void creatlist(linklist *&L ,int n)

这个函数的形参列表有点奇怪啊。
liliangbao 2009-05-12
  • 打赏
  • 举报
回复
重发:
void creatlist(linklist *&L ,int n) 
{
linklist *p;
L=(linklist*)malloc(1); //这里分配空间不对
L->next=NULL;
for(int i=n;i>0;i--)
{
p=(linklist*)malloc(1); //这里分配空间不对
cin>>p->data;
p->next=L->next;
L->next=p;
}


C/C++ code其他两者区别就是:
//使用1时:传指针, creatlist(pL, 10); pL是个指针
//使用2时:传值, creatlist(L, 10); L是个变量
实现没有区别了~
liliangbao 2009-05-12
  • 打赏
  • 举报
回复
void creatlist(linklist *&L ,int n) 
{
linklist *p;
L=(linklist*)malloc(1); //这里分配空间不对
L->next=NULL;
for(int i=n;i>0;i--)
{
p=(linklist*)malloc(1); //这里分配空间不对
cin>>p->data;
p->next=L->next;
L->next=p;
}

其他两者区别就是:
//使用1时:传指针, creatlist(&L, 10);
//使用2时:传值, creatlist(L, 10);
实现没有区别了~
bitxinhai 2009-05-12
  • 打赏
  • 举报
回复
第一个是带头结点的链表,所以要给L分配空间
第二个没有头结点,只有头指针,所以就不用
分配空间了啊
lingyin55 2009-05-12
  • 打赏
  • 举报
回复
-_-||看快了。。

[Quote=引用 1 楼 lingyin55 的回复:]
malloc就是一个分配内存的函数。
而linklist *p; 只是定义了一个指针变量。

楼主查查malloc的作用吧
[/Quote]
lingyin55 2009-05-12
  • 打赏
  • 举报
回复
malloc就是一个分配内存的函数。
而linklist *p; 只是定义了一个指针变量。

楼主查查malloc的作用吧

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧