【C语言提高51】链表基本概念与静态链表

来源:互联网 发布:mac cocos2dx android 编辑:程序博客网 时间:2024/05/16 13:07

链表是一种物理存储单元上非连续的存储结构,由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,节点与节点之间通过指针链接。每个结点包括两个部分:一部分是存储数据元素的数据域,另一部分是存储下一个结点地址的指针域。


链表是一种物理存储单元上非连续的存储结构,由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成,节点与节点之间通过指针链接。每个结点包括两个部分:一部分是存储数据元素的数据域,另一部分是存储下一个结点地址的指针域。

1 链表是一种常用的数据结构,它通过指针将一些列数据结点,连接成一个数据链。相对于数组,链表具有更好的动态性。

2 数据域用来存储数据,指针域用于建立与下一个结点的联系。

3 建立链表时无需预先知道数据总量的,可以随机的分配空间,可以高效的在链表中的任意位置实时插入或删除数据。

4 链表的开销,主要是访问顺序性和组织链的空间损失。




                                                


l链表编程元素分析

头结点、当前结点、前趋结点、后继结点
•pHead、pCurrent、pPrior、pNext
•新建结点
•pMalloc

l链表编程关键点2
•1、指针指向谁,就把谁的地址赋给指针
•Code=Diagram 条件反射
•2、辅助指针变量&操作逻辑的关系
看图说话


静态链表:

//链表数据类型typedef struct Teacher{int data;struct Teacher *next;}Teacher;//无法返回出链表  因为内存以及被销毁Teacher*CreatLIST(){Teacher t1, t2, t3;t1.data = 1;t2.data = 2;t3.data = 3;t1.next = &t2;t2.next = &t3;t3.next = NULL;return &t1;}void main21(){//Teacher*head = CreatLIST(); //野指针//静态链表:固定大小个数  结点内存声明周期不给力Teacher t1, t2, t3;t1.data = 1;t2.data = 2;t3.data = 3;t1.next = &t2;t2.next = &t3;t3.next = NULL;//静态链表的遍历Teacher*p = NULL;p = CreatLIST();while (p){printf("data:%d\n",p->data);p = p->next;  //实现指针的下移}printf("hehehe\n");system("pause");return;}



0 0