资讯动态

链表梳理重点

发布时间:2026/8/20 0:42:53 来源:尧图企业网站定制
链表的定义链表是一种常见的数据结构用于线性方式存储数据。链表是一种物理存储结构上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表是一种动态数据结构由一系列节点组成每个节点包含两部分数据域存储实际数据指针域存储指向下一个节点的地址 对比数组来说的话链表具有动态大小的特性链表的大小可以在运行时动态变化不需要在创建时指定固定的大小元素连接每个元素通常称为节点存储数据并包含一个或多个指针指向列表中的其他节点。无需连续内存数组在内存上每个元素是连续的 因此数组访问可以用下标快速访问 但是链表的内存每一个节点并不连续因此不能直接访问 但数组删除中间的某一个元素时需要把后面的填到前面的位置链表删除元素时 并不需要把后面的提前 让前一个指针指向它即可struct Student{char cName[20]; /*姓名*/int iNumber; /*学号*/struct Student* pNext; /*指向下一个节点的指针*/}; 前两个为数据域最后一个为指针 指向下一个链表的位置二、链表基本结构1.链表类型单向链表每个节点只有一个指向下一个节点的指针双向链表每个节点有指向前一个和后一个节点的指针循环链表尾节点指向头节点形成环三、基本操作1.创建链表//方便后续更改类型typedef int SLTDataType;//定义链表节点typedef struct SListNode{SLTDataType data;struct SListNode* next;}SLTNode;创建新节点SLTNode* SLTCreateNode(SLTDataType x){//malloc出一个节点SLTNode* newnode (SLTNode*)malloc(sizeof(SLTNode));if (newnode NULL){perror(malloc);exit(1);}//防止空//赋值newnode-data x;newnode-next NULL;return newnode;}尾插法创建链表typedef struct Node{int data;//定义数据struct Node* next;}LNode;//首先定义结构体然后.创建新列表首先定义LNode指针类 型的函数在函数中对链表的头和尾进行初始化成NULL定义链表长度len和输入数据num输入链表的长度LNode* creatList(){//初始化链表的头和尾LNode* pHead NULL;LNode* pTail NULL;int len;int num;printf(请输入链表的长度);scanf_s(%d, len);//初始化链表的一个中间变量LNode* pTemp NULL;while (len){printf(请输入数据\n);scanf_s(%d, num);//给链表的一个中间变量开辟一个空间pTemp (LNode*)malloc(sizeof(LNode));pTemp-data num;pTemp-next NULL;//空链表if (pHead NULL){pHead pTemp;}else{pTail-next pTemp;}pTail pTemp;len--;}return pHead;}循环遍历链表首先定义遍历函数Print在函数中判断链表为空时弹出不为空时进行循环遍历。//循环遍历链表void Print(LNode* pHead){//如果表头为空弹出if (pHead NULL){return;}//表头不为空进行循环遍历链表while (pHead){printf(%d , pHead-data);pHead pHead-next;}printf(\n);}

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价