链表简述
来源:互联网 发布:淘宝商城客服 编辑:程序博客网 时间:2024/05/22 10:32
链表是一种利用指针进行动态存储分配的最常见最简单的一种结构(呵呵-。-)。
数组必须事先定义固定的长度(元素个数),不能适应数据动态增减的情况,当数据增加时,可能超出原先定义的元素个数;当数据减少时,会造成内存浪费。
而链表能动态地进行存储分配,可以适应数据动态增间的情况,而且可以方便的插入和删除数据项(在数组中插入和删除时需要移动其他数据项)。
链表有单链表,双链表,环形链表等多种形式,每个链表有一个“头指针”,它指向链表的第一个元素,链表的元素称为结点(Node),结点中包含两个部分的内容,第一部分是数据本身,第二部分是一个指针,指向下一个结点,最后一个节点称为表尾,表尾结点的指针不指向任何地址,存入的是空值(NULL)。
比如,建立一个有3个结点的链表存放学生的学号,姓名和分数的程序:
#include<stdio.h>
struct stu
{
long num;
char *name;
float score;
struct stu *next;
} ;
int main()
{
struct stu stu1,stu2,stu3,*head,*p;
head=&stu1;
stu1.num=1101;
stu1.name="caocao";
stu1.score=90;
stu1.next=&stu2;
stu2.num=1102;
stu2.name="sunquan";
stu2.score=98;
stu2.next=&stu3;
stu3.num=1103;
stu3.name="liubei";
stu3.score=80;
stu3.next=NULL;
for(p=head;p!=NULL;p=p->next)
printf("%ld\t%s\t%.2f\n",p->num,p->name,p->score);
return 0;
}
这个程序定义一个学生类,头结点指向stu1,赋值后指向stu2,stu2指向stu3,然后stu3.next指向空值。最后用一个指针输出链表所有存储的内容。结果如下:
链表的主要操作有以下4种:
1、建立链表
2、结点的查找与输出
3、插入一个结点
4、删除一个结点
- 链表简述
- 链表简述
- 简述数组和链表的区别
- 简述数组和链表的区别
- 原型链机制简述
- 虚表之简述
- 简述表值函数
- 广义表简述
- Hive 表类型简述
- 线性表简述
- 线性表简述
- 线性表之静态链表(简述)
- IOS事件响应者链简述
- Blockchian区块链:IBM HyperLedger fabric 简述
- 简述区块链架构设计,通俗易懂
- 简述区块链架构设计,通俗易懂
- MCS-51指令功能简述表
- MCS-51指令功能简述表
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing
- Linux内存管理之mmap详解
- Java 中 synchronized的用法详解(四种用法)
- 两个链表的第一个公共结点
- TensorFlow之深入理解Neural Style
- 链表简述
- Android include和merge标签、ViewStub控件的使用总结
- 第一章html练习3:家用电器排行榜
- Ubuntu创建android studio桌面图标
- 测试环境搭建
- Eclipse打不开,提示: An error has occurred. see the log file解决办法
- WEB服务器、应用程序服务器、HTTP服务器区别
- 宏定义
- java使用smtp发送邮件问题