企业网站维护工作内容,苏州高端网站建设开发,东莞做网站首选,重庆十大房地产公司文章目录 一、单链表的基本操作的实现1.建立单链表#xff1a;头插法----元素插入在链表头部#xff0c;也叫头插法。2.建立单链表#xff1a;尾插法----元素插入在链表尾部#xff0c;也叫尾插法。 二、线性表的链式表示和实现1.循环列表2.带尾指针的循环链表合并#xf… 文章目录 一、单链表的基本操作的实现1.建立单链表头插法----元素插入在链表头部也叫头插法。2.建立单链表尾插法----元素插入在链表尾部也叫尾插法。 二、线性表的链式表示和实现1.循环列表2.带尾指针的循环链表合并将Tb合并在Ta之后 一、单链表的基本操作的实现
1.建立单链表头插法----元素插入在链表头部也叫头插法。
1.从一个空表开始重复读取数据。 2.生成新结点将读入数据存放到新结点的数据域中。 3.从最后一个结点开始依次将各结点插入到链表的最前端。
void CreateList(LinkList L, int n) {L new LNode;L-next NULL;//先创建一个带头结点的单链表LinkList p;int i;for (i n; i 0; --i) {p new LNode;//生成新结点p (LNode*)malloc(sizeof(LNode));cin p-data;//输入元素值scanf(p-data);p-next L-next;L-next p;}
}
2.建立单链表尾插法----元素插入在链表尾部也叫尾插法。
1.从一个空表L开始将新结点逐个插入到链表的尾部尾指针r指向链表的尾结点。 2.初始时r同L均指向头结点。每读入一个数据元素则申请一个新结点将新结点插入到尾结点后r指向新结点。
void CreateList(LinkList L, int n) {L new LNode;L-next NULL;int i;LinkList r L;//尾指针r指向头结点for (i 0; i n; i) {LinkList p new LNode;cin p-data;//生成新结点输入元素值p-next NULL;r-next p;//插入到表尾r p;//r指向新的尾结点}
}二、线性表的链式表示和实现
1.循环列表
循环列表是一种头尾相连的链表即表中的最后一个结点的指针域指向头指针整个链表形成一个环。 优点从表中任一结点出发均可找到表中的其他结点。 注意由于循环指针没有NULL指针故涉及遍历操作时其终止条件就不再像非循环链表那样判断p或p-next是否为空而是他们是否等于头指针。 p ! L; P - next ! L;
头指针表示单循环链表①找a1的时间复杂度O1②找an的时间复杂度On。 注意表的操作常常在表的首尾进行。 尾指针表示单循环链表①a1的存储位置R-next-next; ②an的存储位置是R。时间复杂度都是O1。
2.带尾指针的循环链表合并将Tb合并在Ta之后 分析的操作 ①p存表头结点pTa-next ②Tb表头连接在Ta表尾(Ta-next Tb-next-next) ③释放Tb表结点(delete Tb-next) ④修改指针(Tb-next p)
LinkList Connect(LinkList Ta, LinkList Tb) {//假设Ta和Tb都是非空的单循环链表LinkList p;p Ta-next;//p存表头结点Ta-next Tb-next-next;//Tb表头连接Ta表尾delete Tb-next;//释放Tb的头结点Tb-next p;//修改指针return Tb;
}