数据结构学习(四)——循环单链表的操作之合并
来源:互联网 发布:淘宝店装修需要多少钱 编辑:程序博客网 时间:2024/06/05 06:36
所谓循环链表就是尾结点与头结点相连的链表,整个链表形成一个环。而对于循环链表的插入与删除运算,基本上与单链表相同,只是在判断链表是否结束有所不同。下面的代码操作实现了两个循环单链表的合并。且核心代码不多,主要是分别找到循环单链表的尾结点再进行后续操作。
#include <stdio.h>#include <stdlib.h>typedef struct list{char data;struct list *next;}linklist;linklist *CreateLinklist_End(int *l);//尾插法创建单循环链表linklist *Linklist_Connect(linklist *h1,int l1, linklist *h2, int l2);//单循环链表的合并void ShowLinklist(linklist *h);//输出显示链表int main(void){linklist *head1, *head2;int length1, length2;//分别记录两个循环链表的长度printf("循环单链表的操作练习:\n");printf("创建两个单循环链表:\n");printf("第一个链表数据输入(请依次输入字符数据,'#'号结束):\n");head1 = CreateLinklist_End(&length1);getchar();//消除回车键为后面输入带来的影响printf("第二个链表数据输入(请依次输入字符数据,‘#’号结束):\n");head2 = CreateLinklist_End(&length2);printf("第一个链表的数据依次为:\n");ShowLinklist(head1);printf("其节点数目为:%d\n", length1);printf("第二个链表的数据依次为:\n");ShowLinklist(head2);printf("其节点数目为:%d\n", length2);printf("第一个链表和第二个链表的合并输出为:\n");head1 = Linklist_Connect(head1, length1, head2, length2);ShowLinklist(head1);return 1;}//尾插法创建循环单链表,参数l表示创建链表的长度linklist *CreateLinklist_End(int *l){linklist *head, *p, *e;char ch;*l = 0;head = (linklist*)malloc(sizeof(linklist));e = head;ch = getchar();while(ch != '#'){*l = *l + 1;p = (linklist*)malloc(sizeof(linklist));p->data = ch;e->next = p;e = p;ch = getchar();}e->next = head;//循环链表的尾结点指针域指向头节点return head;}//单循环链表的合并linklist *Linklist_Connect(linklist *h1, int l1, linklist *h2, int l2){linklist *p1, *p2;int l=1;p1 = h1->next;while(l<l1)//找到链表1的尾结点{l++;p1 = p1->next;}p2 = h2->next;l = 1;while(l<l2)//找到链表2的尾结点{l++;p2 = p2->next;}p1->next = p2->next->next;//核心操作:链表1的尾结点指向链表2辅助头节点的下个节点p2->next = h1;//链表的尾结点指向链表1的辅助头节点free(p2->next);//释放链表的辅助头节点return h1;}//输出显示链表void ShowLinklist(linklist *h){linklist *p;p = h->next;while(p != h)//循环单链表的结束判断标志为不等于头节点{printf("%c ", p->data);p = p->next;}printf("\n");}
- 数据结构学习(四)——循环单链表的操作之合并
- 数据结构学习(五)——循环双链表的操作之创建,插入、删除
- 数据结构学习(六)——循环顺序队列的操作
- 数据结构之俩循环单链表合并
- 【学习总结】数据结构之循环链表的基本操作
- 数据结构面试之四——队列的常见操作
- 数据结构面试之四——队列的常见操作
- 数据结构面试之四——队列的常见操作
- /*循环单链表合并操作
- 数据结构——循环队列的学习
- 【学习总结】数据结构之循环链表和循环链表合并
- 数据结构学习笔记(四)单链表的算法操作
- 数据结构之循环链表操作3-(合并,拆分,插入,删除,建立等)
- 数据结构学习之双向循环链表操作
- 数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现
- 数据结构学习之双向循环链表的基本操作(非递归实现)
- 数据结构之循环队列操作
- 【程序员面试宝典】数据结构基础二单链表循环链表的操作 建立|插入删除|打印|合并
- 谈谈对于企业级系统架构的理解
- xWindow 的 ”Hello World“实例
- NoSQL数据库的分布式算法
- Web开发中常见的java.lang.IllegalStateException错误 解决办法
- JActor基础知识(二)
- 数据结构学习(四)——循环单链表的操作之合并
- VS2008具体操作Excel
- 网页不刷新检测用户名的方法
- How to restore an element that has been deleted in CCRC?
- 遇到的一些问题
- 在VS2008下操作Excel的方法总结
- 避免弹出键盘遮盖住视图上的控件
- android 手电筒的实现
- 游戏中添加音频-详解MediaPlayer与SoundPoo!并讲解两者的区别和游戏中的用途!