logo

您所在位置网站首页 > 海量文档  > 计算机 > 嵌入式开发

嵌入式Linux系统开发—基于ARM处理器通用平台 第4章.ppt 539页

本文档一共被下载: ,您可全文免费在线阅读后下载本文档。

  • 支付并下载
  • 收藏该文档
  • 百度一下本文档
  • 修改文档简介
全屏预览

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
创建动态链表例子 例如在链表概述中介绍过可以将一个班级里的学生作为链表中的结点,然后将所有学生的信息存放在链表结构中。 首先创建结点结构,表示每一个学生: struct Student { char cName[20]; /*姓名*/ int iNumber; /*学号*/ struct Student* pNext; /*指向下一个结点的指针*/ }; 然后定义一个Create函数,用来创建列表。其函数将会返回链表的头指针: struct Stuint iCount; /*全局变量表示链表长度*/ struct Student* Create() { struct Student* pHead=NULL; /*初始化链表头指针为空*/ struct Student* pEnd,*pNew; iCount=0; /*初始化链表长度*/ pEnd=pNew=(struct Student*)malloc(sizeof(struct Student)); printf("please first enter Name ,then Number\n"); scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); while(pNew->iNumber!=0) { iCount++; if(iCount==1) { pNew->pNext=pHead; /*使得指向为空*/ pEnd=pNew; /*跟踪新加入的结点*/ pHead=pNew; /*头指针指向首结点*/ }dent { char cName[20]; /*姓名*/ int iNumber; /*学号*/ struct Student* pNext; /*指向下一个结点的指针*/ }; else { pNew->pNext=NULL; /*新结点的指针为空*/ pEnd->pNext=pNew; /*原来的尾结点指向新结点*/ pEnd=pNew; /*pEnd指向新结点*/ } pNew=(struct Student*)malloc(sizeof(struct Student)); /*再次分配结点内存空间*/ scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); } free(pNew); /*释放没有用到的空间*/ return pHead; } Create函数的功能是创建链表,在Create的外部可以看到一个整型的全局变量iCount,这个变量的作用是表示链表中结点的数量。在Create函数中,首先定义需要用到的指针变量,pHead用来表示头指针,pEnd用来指向原来的尾结点,pNew指向新创建的结点。 使用malloc函数分配内存,先用pEnd和pNew两个指针都指向第一个分配的内存。然后显示提示信息,先输出一个学生的姓名,再输入学生的学号。使用while进行判断,如果学号为0,则不执行循环语句。 在while循环语句中,iCount++自加操作表示链表中结点的增加。然后要判断新加入的结点是否是第一次加入的结点,如果是第一次加入则执行if语句块中的代码,否则执行else语句块中的代码。 在if语句块中,因为第一次加入结点时其中没有结点,所以新结点即为首结点也为最后一个结点,并且要将新加入的结点的指针指向NULL,即为pHead指向。else语句实现的是链表中已经有结点存在时的操作。首先将新结点pNew的指针指向NULL,然后将原来最后一个结点的指针指向新结点,最后将pEnd指针指向最后一个结点。 这样一个结点创建完之后,要再进行分配内存,然后向其中输入数据,通过while语句再次判断输入的数据是否符合结点的要求。当结点不符合要求时,执行下面的代码,调用free函数将不符合要求的结点空间进行释放。 这样一个链表就通过动态分配内存空间的方式创建完成了。 输出链表 链表已经被创建出来,构建数据结构就是为了使用它,以将保存的信息进行输出显示。接下来介绍如何将链表中的数据显示输出。 void Print(struct Student* pHead) { struct Student *pTemp; /*循环所用的临时指针*/ int iIndex=1; /*表示链表中结点的序号*/ printf("the List has %d members:\n",iCount); /*消息提示*/ printf("\n"); /*换行*/ pTemp=pHead; /*指针得到首结点的地址*/ while

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片

?2010-2013 www.nayamazukaiketu.com在线文档投稿赚钱网. All Rights Reserved 蜀ICP备08101938号

瑞彩祥云彩票平台