链表学习(一)
来源:互联网 发布:mac怎样安装pc360游戏 编辑:程序博客网 时间:2024/05/24 05:42
1.单项链表
code:
#include <stdio.h>#include <malloc.h>int n=0;typedef struct code{ int data; struct code *next;}List;List *creatlink(){ List *head; List *p1; List *p2; head=NULL; p1=(List *)malloc(sizeof(List)); p2=(List *)malloc(sizeof(List)); printf("Please print the data you want:(end is 0)\n"); scanf("%d",&p1->data); while(p1->data!=0) { n++; if(n==1) { head=p1; } else { p2->next=p1; } p2=p1; p1=(List *)malloc(sizeof(List)); scanf("%d",&p1->data); } free(p1); p2->next=NULL; return(head); }void Print(List *head){ List *p; p=head; if(head!=NULL) do { printf("[%d]->",p->data); p=p->next; } while(p!=NULL); printf("\nover!\n"); }int main(){ List *head; head=creatlink(); Print(head); return(0);}
单向链表建立容易犯错误的是这一块:
if(n==1) { head=p1; } else { p2->next=p1; } p2=p1; p1=(List *)malloc(sizeof(List)); scanf("%d",&p1->data); // printf("\n%d\n",p1->data); }
先判定头指针,然后再重新为p1申请一片内存,来存放下一个链表里的内容 malloc()最容易出现的问题是内存泄露,所以一定要记得free();
free(p);p=NUll 为啥free(p)之后,还要置p=NULL呢?有必要么?
free(p)只是将p指向的空间释放掉了,但是p并不等于NULL;
code:
int main(){ int *p; p = (int *)malloc(sizeof(int) * 10); printf("before free: p=%p\n",p); free(p); printf("after free: p = %p\n",p); printf("%d\n",p[0]); p=NULL; printf("%d\n",p[0]);}
result:
before free: p=0x8fa7008
after free: p = 0x8fa7008
0
段错误
也就是p虽然有值,但其指向的空间已经被释放掉了。如果在后续的code中再用到p,就会出现错误,而这种错误是不太明显的。如果显式的置为null的话,就可以使错误马上显现出来。从而避免了调试程序中种种诡异的麻烦。
结论:
如果在程序中free(p)之后,p不会再用,则令p=NULL无所谓。
如果在程序中free(p)之后,p还会用到,则令p=NULL,还原p为纯净的变量,便于以后差错。
阅读全文
0 0
- 链表学习(一)
- C++学习(一)顺序链表
- 链表学习笔记(一)
- 链表基础学习(一)
- 学习机器学习(一)
- 迁移学习学习(一)
- (一)Android数据结构学习之链表
- (一)职责链模式学习
- 基础学习--表的概念(一)
- 数据结构学习之顺序表(一)
- 数据结构学习笔记(一) 顺序表
- oralce学习笔记(一)表空间
- 学习总结一(数据库表关系)
- 数据结构学习笔记(一) 顺序表
- 学习ShellCode(一)
- STL学习(一)
- portal学习(一)
- JavaScript学习(一)
- Persistent Data Structures 可持久化的数据结构
- 不花1分钱体验零流量地图导航
- AVHWAccel
- Linux-Nginx-MySQL-PHP环境搭建:F**K,PHP7删除了mysql哭
- test
- 链表学习(一)
- 浅谈SQL优化
- RxJava的MissingBackpressureException
- 关于xml文件中id的声明顺序的小问题以及联想
- 微信小程序swiper滑动页面实践-类似于安卓ViewPager
- HashMap源码解析
- WebStorm使用之.JS文件自动压缩YUI Compressor配置
- jdbc编程步骤
- Java内存模型