链表基本概念:
链表:线性表的链式存储。
数据域:存储数据信息。即数据。
指针域:存放下一节点的位置信息。即该指针指向下一节点。
单链表:每一个节点node:一个数据域 + 一个指针域。
头节点:
1、数据域可以存放线性表长度等公共信息。
2、指针域,指向第一个节点(数据域)的位置。
3、头结点不一定是链表的必须元素。不过有了头结点,对第一个元素节点前插入和删除元素,就和其它节点一致了。
4、头结点是为了操作的同一和方便设立的,其数据域一般无意义,也可存放链表长度。
头指针:指向第一个结点的指针。
最后一个节点:数据域存放数据;指针域为空,即NULL。
若线性表为空,则头节点的指针域为空。
// 循环链表:将单链表中的终端节点的指针由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表简称循环链表。
// 双向链表:是在单链表的每个节点中,再设置一个指向其前驱节点的指针域。
单链表基本操作有:创建、输出、测长、插入、删除、逆置、排序等。
单链表结构定义代码:
创建单链表操作:
输出操作:
测一个链表的节点数,即长度:
插入节点操作:
删除操作:
逆置操作:
单链表排序(使用冒泡排序法):此排序算法,仅交换了数据,没有交换结点
一个特别的函数:用于找出单链表中间节点,在不知道节点总数的情况下
测试主函数: