初学链表的一些总结
来源:互联网 发布:南京浦口区网络问政 编辑:程序博客网 时间:2024/06/05 10:30
这几天学习了一下链表,经过几天的奋战总算是基本了解了一点单链表。
初学者,可能会有一些不完美的地方。下面是一个简单的单链表。
像许多人说的一样,我们可以把链表比作一列火车;那么每节点就相当于火车的每节车厢,
数据域就相当于火车中的货物或乘客,指针域就相当于两节车厢之间的铰链,连
接着两节车厢。
声明创建一个结构
struct node{ int value; //数据域,相当于车厢中的货物或人 struct node *next; //指针域,相当于两节车厢中的铰链};
结构中的数据域用于存放数据,指针域用于节点之间的连接,通过指向下一个节点的地址来实现连接。
创建节点
int main(){ struct node *head,*p,*q; int count=0;//用于计数,数数到底有多少节车厢; /*p用于创建节点; head用于指向p,搬运工; 并通过head->next连接下一个节点,也就是铰链; q用于存放第一个节点,即车头;*/ head=p=q=NULL; //初始化指针,相当于一开始还没有车厢; p=(struct node*)mallco(sizeof(struct node)); //给p分配动态空间,也就是车厢的大小; scanf("%d",&p->value); //输入数据,将货物或人放进车厢; head=p; //将head指向p,搬运工确定车厢; q=p; //将q指向p,确定车头; while(p->value>0) //假设只要数据域的值不大于0就停止创建新节点; { p=(struct node*)mallco(sizeof(struct node)); //给p分配动态空间,创建新节点; scanf("%d",&p->value); //输入数据 head->next=p; //指针域指向p,连接两个节点; head=p; //刷新head,使其与p同步; count++; //计数变量自增1; }}
访问并输出链表中的内容
while(count--) { printf("%d\n",q->value); //输出第一个节点的数据域,将车厢里面的东西拿出来; q=q->next; //指向第二个节点,去下一个车厢; }
完整的代码
#include<stdio.h> #include<stdlib.h> //malloc在这个头文件中 //声明创建一个结构 struct node{ int value; //数据域,相当于车厢中的货物或人 struct node *next; //指针域,相当于两节车厢中的铰链};int main(){ //创建节点 struct node *head,*p,*q; int count=0;//用于计数,数数到底有多少节车厢; /*p用于创建节点; head用于指向p,搬运工; 并通过head->next连接下一个节点,也就是铰链; q用于存放第一个节点,即车头;*/ head=p=q=NULL; //初始化指针,相当于一开始还没有车厢; p=(struct node*)mallco(sizeof(struct node)); //给p分配动态空间,也就是车厢的大小; scanf("%d",&p->value); //输入数据,将货物或人放进车厢; head=p; //将head指向p,搬运工确定车厢; q=p; //将q指向p,确定车头; while(p->value>0) //假设只要数据域的值不大于0就停止创建新节点; { p=(struct node*)mallco(sizeof(struct node)); //给p分配动态空间,创建新节点; scanf("%d",&p->value); //输入数据 head->next=p; //指针域指向p,连接两个节点; head=p; //刷新head,使其与p同步; count++; //计数变量自增1; } //访问并输出链表中的内容 while(count--) { printf("%d\n",q->value); //输出第一个节点的数据域,将车厢里面的东西拿出来; q=q->next; //指向第二个节点,去下一个车厢; } return 0;}
1 0
- 初学链表的一些总结
- html5的canvas的一些初学总结
- 初学jsp的一些问题的总结
- 初学angular2的一些总结 1.)
- 初学python,一些总结
- 初学SqlServer,总结一些注意事项
- 关于一些排序算法的个人总结(初学)
- 黑马程序员 初学OC的一些注意总结 1
- 黑马程序员 初学OC的一些注意总结2
- 黑马程序员 初学OC的一些注意总结3
- Erlang初学:Erlang的一些特点和个人理解总结
- Erlang初学:Erlang的一些特点和个人理解总结
- 初学单片机时总结的想法及一些程序
- wince的初学总结
- 初学rman的总结
- 初学深搜广搜的总结
- 初学Html5的总结
- 初学html 中一些样式总结
- PAT练习基础编程题目之统计某类完全平方数
- 利用Commons-email组件发送邮件
- Light oj--1008
- Android侧滑菜单的实现
- QT+VS2010配置
- 初学链表的一些总结
- 暂停更新,请到http://www.52brt.com上关注最新文章
- Blog
- 浮点数的二进制表示
- Java中的24种设计模式与7大原则
- 银联在线支付接入总结
- 【Python】用zip函数求欧氏距离、余弦相似度
- 《leetCode》:Word Search
- 用lambda作为函数的指针