首先说点题外话吧。从第一次用CU到现在已经两年多了,但是原创博文仅仅两篇,原因是我将博文都投入到CSDN上去了。我有罪。现在我迷途知返,我一定用心写出好文章。
=============================================
各位看官,先上源代码
-
struct ListNode {
-
int val;
-
ListNode *next;
-
ListNode(int x) : val(x), next(NULL) { }
-
};
-
-
ListNode *creatList(int n) {
-
ListNode head(-1);
-
ListNode *prev = &head;
-
ListNode *prev2;
-
prev2 = &head;
-
int val;
-
-
for (int i = 0; i < n; ++i) {
-
cin >> val ;
-
//allocate the memory space for new node
-
prev->next = new ListNode(val);
-
prev = prev->next;
-
}
-
prev->next = NULL;
-
return head.next;
-
}
以上这段代码节选自某类。主要做两件事,定义了一个结构体和实现了尾插法创建函数的功能。这些你都可以忽略。重点看我高亮的三行代码即可。
第九行代码表示在定义指针时进行初始化,此时,*prev表示我们定义的是一个指针变量,并非间接取值的意思。对指针进行初始化,需要对其赋予内存地址。head是一个结构体,故而在head前加有符号&,表示取得head首地址之意。
第十行和十一行,与第九行只是写法不一样。我们先声明变量*prev,再对其初始化。注意第十一行中,变量prev2前没有了*。
我个人还是推荐第9行的写法,清晰明了不易出错。
阅读(3227) | 评论(0) | 转发(0) |