单链表的链式储存特点:
链表是一种顺序存取结构,按位置访问链表中第i个元素时,只能从表头开始依次向后遍历链表,直到找到第i个位置上的元素,时间复杂度为O(n), 即取值操作的效率低。但在确定插入或删除的位置后,插入或删除操作无需移动数据,只需要修改指针, 时间复杂度为0(1)。
若线性表的主要操作是和元素位置紧密相关的这类取值操作,很少做插入或删除时, 宜采用顺序表作为存储结构。 对于频繁进行插入或删除操作的线性表,宜采用链表作为存储结构。
代码如下:
其中单链表的基本操作包括:
1.头插法,尾插法
2.删除
3.查找
4.排序
#include<cmath> #include<iostream> using namespace std; #define Status int #define ElemType int //单链表结点数据结构 typedef struct LNode { ElemType data;//数据域 struct LNode *next;//指针域 }LNode,*LinkList; //**************************基本操作函数***************************// //初始化函数 Status InitList(LinkList &L) { L = new LNode;//生成头结点 这样删除等操作就不必分第一个结点和其他了 L->next = NULL; return 1; } //获取单链表长度 头结点无数据,不算 int ListLength(LinkList L) { LinkList p=L;int sum=0; while(p) {