我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 程序设计 -> C++ -> C++综合 -> 文章内容  
栏目导航
· C++综合 · C++通信
· C++视图 · C++图象
· C++系统 · C++多媒体
· C++界面 · C++文件
· C++数据库 · C++网络
热门文章
· C/C++中的结构体
· C/C++中结构体(struct..
· C++中类的继承特性
· C++启蒙之控制结构
· C++面向对象编程入门:..
· C++面向对象编程入门:..
· 理解C++面向对象程序设..
· C++类对象的复制-拷贝..
· C++类静态数据成员与类..
· C++友元的入门教程
· C++中类的多态与虚函数..
· 类的分解,抽象类与纯..
相关文章

· C/C++中的结构体
· [图文] Eclipse3.06 ..
· C/C++返回内部静态成..
· 用Eclipse平台进行C..
· C/C++作用域引申出的..
· 西部数据推500GB台式..
· Linux /proc//mem m..
· /etc/inittab文件的..
查看更多与C/C++中结构体(struct)知识点强化相关内容

C/C++中结构体(struct)知识点强化
作者:幽火  来源:www.5ihack.com  发布时间:2007-1-8 17:12:01  发布人:ghostfire

减小字体 增大字体

  在上一个教程中我们已经简单的阐述了什么是结构体了,为了进一部的学习结构体这一重要的知识点,我们今天来学习一下链表结构。

  结构体可以看做是一种自定义的数据类型,它还有一个很重要的特性,就是结构体可以相互嵌套使用,但也是有条件的,结构体可以包含结构体指针,但绝对不能在结构体中包含结构体变量。

structtest 
{ 
   charname[10]; 
   floatsocre; 
   test*next; 
};//这样是正确的!
  structtest 
{ 
   charname[10]; 
   floatsocre; 
   testnext; 
};//这样是错误的!

  利用结构体的这点特殊特性,我们就可以自己生成一个环环相套的一种射线结构,一个指向另一个。

  链表的学习不像想象的那么那么容易,很多人学习到这里的时候都会碰到困难,很多人也因此而放弃了学习,在这里我说,一定不能放弃,对应它的学习我们要进行分解式学习,方法很重要,理解需要时间,不必要把自己逼迫的那么紧,学习前你也得做一些最基本的准备工作,你必须具备对堆内存的基本知识的了解,还有就是对结构体的基本认识,有了这两个重要的条件,再进行分解式学习就可以比较轻松的掌握这一节内容的难点。

  下面我们给出一个完整的创建链表的程序,不管看的懂看不懂希望读者先认真看一下,想一想,看不懂没有关系,因为我下面会有分解式的教程,但之前的基本思考一定要做,要不即使我分解了你也是无从理解的。

  代码如下,我在重要部分做了注解:

#include<iostream> 
usingnamespacestd; 
 
structtest 
{ 
   charname[10]; 
   floatsocre; 
   test*next; 
};
 

  test*head;//创建一个全局的引导进入链表的指针 
 
test*create() 
{ 
   test*ls;//节点指针 
   test*le;//链尾指针 
   ls=newtest;//把ls指向动态开辟的堆内存地址 
   cin>>ls->name>>ls->socre; 
   head=NULL;//进入的时候先不设置head指针指向任何地址,因为不知道是否一上来就输入null跳出程序 
   le=ls;//把链尾指针设置成刚刚动态开辟的堆内存地址,用于等下设置le->next,也就是下一个节点的位置 
 
   while(strcmp(ls->name,"null")!=0)//创建循环条件为ls->name的值不是null,用于循环添加节点 
   { 
     if(head==NULL)//判断是否是第一次进入循环 
     { 
       head=ls;//如果是第一次进入循环,那么把引导进入链表的指针指向第一次动态开辟的堆内存地址 
     } 
     else 
     { 
       le->next=ls;//如果不是第一次进入那么就把上一次的链尾指针的le->next指向上一次循环结束前动态创建的堆内存地址 
     } 
     le=ls;//设置链尾指针为当前循环中的节点指针,用于下一次进入循环的时候把上一次的节点的next指向上一次循环结束前动态创建的堆内存地址 
     ls=newtest;//为下一个节点在堆内存中动态开辟空间 
     cin>>ls->name>>ls->socre; 
   } 
 
   le->next=NULL;//把链尾指针的next设置为空,因为不管如何循环总是要结束的,设置为空才能够在循环显链表的时候不至于死循环 
   deletels;//当结束的时候最后一个动态开辟的内存是无效的,所以必须清除掉 
   returnhead;//返回链首指针 
}
 

查看更多与C/C++中结构体(struct)知识点强化相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      C++面向对象编程入门:类(class)       C/C++中的结构体
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图