Chinaunix首页 | 论坛 | 博客
  • 博客访问: 519823
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-21 13:40
个人简介

技术改变命运

文章分类

全部博文(184)

文章存档

2020年(16)

2017年(12)

2016年(156)

我的朋友

分类: C/C++

2016-05-14 19:11:22


首先说点题外话吧。从第一次用CU到现在已经两年多了,但是原创博文仅仅两篇,原因是我将博文都投入到CSDN上去了。我有罪。现在我迷途知返,我一定用心写出好文章。
=============================================
各位看官,先上源代码
  1. struct ListNode {
  2.     int val;
  3.     ListNode *next;
  4.     ListNode(int x) : val(x), next(NULL) {    }
  5. };

  6.     ListNode *creatList(int n) {
  7.         ListNode head(-1);
  8.         ListNode *prev = &head;
  9.         ListNode *prev2;
  10.         prev2 = &head;
  11.         int val;

  12.         for (int i = 0; i < n; ++i) {
  13.             cin >> val ;
  14.             //allocate the memory space for new node
  15.             prev->next = new ListNode(val);
  16.             prev = prev->next;
  17.         }
  18.         prev->next = NULL;
  19.         return head.next;
  20.     }
以上这段代码节选自某类。主要做两件事,定义了一个结构体和实现了尾插法创建函数的功能。这些你都可以忽略。重点看我高亮的三行代码即可。
第九行代码表示在定义指针时进行初始化,此时,*prev表示我们定义的是一个指针变量,并非间接取值的意思。对指针进行初始化,需要对其赋予内存地址。head是一个结构体,故而在head前加有符号&,表示取得head首地址之意。
第十行和十一行,与第九行只是写法不一样。我们先声明变量*prev,再对其初始化。注意第十一行中,变量prev2前没有了*。

我个人还是推荐第9行的写法,清晰明了不易出错。

阅读(3227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~