正在阅读:C/C++中结构体(struct)知识点强化C/C++中结构体(struct)知识点强化

2005-03-07 15:12 出处:PConline 作者:管宁 责任编辑:xietaoming

  代码中的else条件是为了设置前一个节点next指向而写的,这点我们记住先看下面的代码,稍后大家回过头想就明白了

le=ls;
ls=new test;
cin>>ls->name>>ls->socre;

  le=ls;这么写就是为了保存上一次循环指针的位置而设的,正是为了上面的else代码而做的预先保留

ls=new test;
cin>>ls->name>>ls->socre;

  这两行代码的意思就是继续开辟下一个节点空间,和输入节点内容!

  循环一旦结束也就结束了程序,为了保持程序不出错,也就是最后一个节点的next成员指向为空我们有了下面的代码

le->next=NULL;

  程序的思路始终是以先开辟后判断为思路的,所以到最后一个不成立的时候总会有一个多开辟的内存空间,为了删除掉它,我们有了下面的代码

delete ls;

  程序到最后由于返回head指针

return head;

  显示链表的函数没有什么太多特别的也只需要注意下面这样就可以了!

head=head->next;

  我们之所以不用head+=1;来写就是因为链表是我们动态开辟的,而每一个节点的位置并不是相连的,next成员指针的意义也就是下一个节点的内存地址。

  到这里整个创建函数的设计思路也都说完了,笔者不一定说的很好,但基本思路是这样的,希望读者多思考,多对比,相信此教程还是对大家有帮助的,程序设计就是利用逐步思考的方式进行的,写好的代码往往直接看看不懂就是因为中间的细节并不是一次都能够想到的。

  下面我们来说一下链表节点的删除!

  我们以上面的程序为基础,但为了我们方便学习删除我们休整结构体为

struct test
{
int number;
float socre;
test *next;
};

  number为唯一的编号每一个节点的。

  删除的我就不多说了,里面重要部分有注解。

  特别注意deletel函数的参数意义,指针的引用在这里很重要,如果只是指针,或者只是应用都是不行的,为什么仔细思考,很多知名的教材在这一问题上都很模糊,而且很多书还有错误,程序不错,但思路是错的,我这里特别不说,请大家仔细阅读程序,如果还是有问题,可以回此帖,我会回答的。

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品