黑马程序员———C语言———【数据结构:单链表】
来源:互联网 发布:wamp apache无法启动 编辑:程序博客网 时间:2024/06/01 23:49
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
——————————————————————————————————————————————————————————————————
</pre><pre name="code" class="cpp">#include <stdio.h>#include <stdlib.h>#include <string.h>/* 单链表思路: 当我们在内存中用malloc申请内存空间时,内存分配的空间地址不一定是连续的,因此我们要想将这些不连续的内存空间在使用上变得 连续起来,在不使用数组等集合的情况下,可以使用单链表。 单链表就是一块内存空间分为两部分,一部分用来存储数据,另一部分用来存放指针,该指针指向另一个数据的地址。 这样,只要我们设置合理,利用头数据就可以找到下一个数据(利用头数据的指针找到下一个数据)。 问题: (1)头数据:先创建一个头指针,赋值NULL,后面检测改头指针是否有值,没值就给它赋值,有值就证明先前已经有数据了,这样就让上 一个数据的指针指向新创建的这个数据。数据就连起来了。 (2)当前数据的初始化:首先,当前结构体中会有一个指针用来指向下一个数据。在程序执行的时候,给当前的结构体指针赋值,但是该 结构体指针变量中的指针变量成员要赋值为NULL,以便于让这个赋值为NULL的指针成员变量指向我们下一个要创建的结构体指针,如果不 创建了,则证明被赋值为NULL的这个结构体指针变量是最后一个数据。 细节: gets()的结束判断条件是:回车('\n'),在结束之前,会给已经输出的字符串的结尾加上字符串结束符'\0'。 puts()和scanf("%s",x)输出字符串都会读到'\0',之后的不会再输出。*/struct Film{ char title[40]; int rating; struct Film *next;};int main(){ struct Film *head=NULL; //这里一定要赋值null struct Film *prev,*current; char input[40]; printf("enter first movie title:"); while(gets(input)!=NULL && input[0]!='\0'){ current=(struct Film *)malloc(sizeof(struct Film)); if(head==NULL){ head=current; }else{ prev->next=current; } current->next=NULL; strcpy(current->title,input); printf("please enter the movie rating:"); scanf("%d",¤t->rating); if(getchar()!='\n'){ break; } prev=current; printf("\n"); printf("enter next movie title(empty line to stop):"); } //展示电影列表 //从头数据开始,所以把头数据交给current current=head; while(current!=NULL){ printf("movie title is :%s , movie rating is %d .\n",current->title,current->rating); current=current->next; } //释放内存 current=head; while(current!=NULL){ free(current); current=current->next; } printf("bye!\n");}
0 0
- 黑马程序员——c语言学习---数据结构
- 黑马程序员———C语言———【数据结构:单链表】
- 黑马程序员——C语言指针
- 黑马程序员——C语言基础
- 黑马程序员——C语言基础
- 黑马程序员—C语言—从零开始
- 黑马程序员—C语言—指针
- 黑马程序员——C语言数组
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言基础
- 黑马程序员——C语言总结
- 黑马程序员——C语言概述
- 黑马程序员——C语言数组
- 黑马程序员——C语言指针
- 黑马程序员——C语言
- 黑马程序员——C语言指针
- 黑马程序员——c语言函数
- iOS 截取图片,并且保持图片原有比例,同时填充imageView
- 第六章指针和基于指针的字符串
- Java 内存区域和GC机制
- JFileChooser的使用
- 九度OJ 题目1061:成绩排序
- 黑马程序员———C语言———【数据结构:单链表】
- make的时候能够检查头文件是否有更新过
- Ibatis知道(一)
- Oracle-----Update语句优化之merge into
- 7 款开源 Java 反编译工具
- LeetCode OJ 之 Ugly Number II (丑数-二)
- 5-2 派生类的构造函数
- 九度OJ 题目1062:分段函数
- 手写下拉刷新