怎样初始化一个链表呢?

u010179812 2013-07-22 10:04:05
如下程序我想初始化一个链表变量,但是第三个成员该怎么表示呢?

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

struct name
{
char firstname[SIZE];
char lastname[SIZE];
struct name *next;
};

int main(void)
{
struct name *head = {"aaa","bbb", };//第三个成员该怎么表示了?

return 0;
}

...全文
722 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-07-22
  • 打赏
  • 举报
回复
u010179812 2013-07-22
  • 打赏
  • 举报
回复
谢谢大家,正在慢慢体会中。
满桌烟灰 2013-07-22
  • 打赏
  • 举报
回复
你要改变一下关于链表的思考方向。 即: 1、不要用初始化数组或结构的方式去处理链表; 2、链表的每一个节点要用一个子程序进行动态创建,同时赋值; 3、删除链表中的节点时,要注意回收内存;
一根烂笔头 2013-07-22
  • 打赏
  • 举报
回复

struct name *head = {"aaa","bbb",   };//第三个成员该怎么表示了?
哥们,这是个指针,不是结构体变量,不能这样初始化的!

struct name head = {"aaa","bbb",  NULL};
初始化是在编译时候决定的,其地址之前不可知,因为lz就打消这样做法的念头吧,学习学习动态分配于释放! 如果非要这么做,也有个小法

struct name 
{
    char firstname[SIZE];
    char lastname[SIZE];
    int next;
};
修改结构体,使用结构数组!

struct name head[3] = {{"aaa","bbb",  1},//0->1
                          {"aaa","bbb",  2},//1-》2
                           {"aaa","bbb",  -1}}//2-》-1(空);
u010179812 2013-07-22
  • 打赏
  • 举报
回复
好的,继续看书。
starytx 2013-07-22
  • 打赏
  • 举报
回复
看书吧,每个节点都是动态开辟的空间,一般都是前一个指向下一个的地址(malloc或new返回的指针)
u010179812 2013-07-22
  • 打赏
  • 举报
回复
我试了一下,用NULL时一个变量是对的,但是对于链表数组织怎样表示呢?是不是根本就不能像这样写,如下:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

#define SIZE 100

struct name 
{
	char firstname[SIZE];
	char lastname[SIZE];
	struct name *next;
};

int main(void)
{
	struct name head = {"aaa","bbb", NULL};//这是对的
	struct name *p = {
		{"ccc", "ddd", NULL},
//上面肯定不用用NULL了吧?因为它是有值的,是保存了第二个成员的地址,那怎么表示了?
		{"eee", "fff", NULL}
	};
		
	 return 0;
}

 
u010179812 2013-07-22
  • 打赏
  • 举报
回复
哦,谢谢大家,我试试。
Gonefar 2013-07-22
  • 打赏
  • 举报
回复
下一个节点嘛,初始化时设为NULL
zybjtu 2013-07-22
  • 打赏
  • 举报
回复
果断null啊
starytx 2013-07-22
  • 打赏
  • 举报
回复
第三个可以设为NULL表示头结点

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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