数据结构学习--创建链表
2015-07-23 20:52
232 查看
#include "stdio.h" #include "stdlib.h" struct pass { int number; struct pass *next; }; struct pass * createList(struct pass *head) { int i = 0; struct pass *p1; /*要新加的节点*/ struct pass *p2; /*尾节点*/ head = NULL; /*头节点*/ p1 = (struct pass*)malloc(sizeof(struct pass)); p2 = p1; p1->next = NULL; for(i = 1; i<=10; ++i) { if(p1 == NULL) return; p1->number = i; if(head == NULL) { head = p1; //第一次循环时, 表是空的, 将p1设置为表头,此时head == p2 == p1; } else { p2->next = p1; //第二次开始, p1是新的节点, p2是表尾, 将表尾的next指向新节点 } p2 = p1; //p2设为表尾 p1 = (struct pass*)malloc(sizeof(struct pass)); } p2->next = NULL; //没有这一句, p2将指向不明位置,导致下面的temp ==NULL的判断不起作用 free(p1); //一定要将将p1 free并且置为NULL, 否则指针变成"野指针", "野指针"指程序不再使用的指针, //程序员无法控制,free只是把指针所指的内存释放掉, 并没有删除指针. p1 = NULL; return head; } void print(struct pass *head) { struct pass *temp; temp = head; while(temp != NULL) { printf("%d ", temp->number);//如果没有p2->next = NULL, 将导致错误. temp = temp->next; } } int main() { struct pass *head = NULL; head = createList(head); print(head); }
结果如图:
相关文章推荐
- 数据结构:图的存储结构之邻接矩阵(摘自网易云课堂)
- 数据结构——POJ 1686 Lazy Math Instructor 栈的应用
- 数据结构——N皇后放置方法种数
- 课程笔记 08:数据结构(清华) 列表-读写接口
- 数据结构——foodfill 八连块问题
- Windows画刷,图标等数据结构的原理
- 迷宫算法及数据结构分析(by WIzaRD_ssc)
- java数据结构和算法------图(最小生成树Kruskal)
- 【数据结构】散列表
- caffe的基本数据结构
- 数据结构与算法-函数的渐近增长
- 数据结构与算法-函数的渐近增长
- 南阳oj NYOJ 数据结构 题目93 汉若塔(三)
- 浅谈队列及栈的用法
- C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用
- c/c++ 数据结构之位图(bitmap)详解
- 数据结构中的基本概念
- COJ 0986 WZJ的数据结构(负十四) 区间动态k大
- 数据结构(二):链表、链队列
- 如何实现循环队列