有两个循环单链表,头指针分别是head1和head2,实现算法将链表head2连接到head1之后,连接后的链表仍然是循环链表的形式
来源:互联网 发布:网络作家跳舞 编辑:程序博客网 时间:2024/05/18 03:02
头文件:函数的声明
#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef int ElemType;typedef struct Node {ElemType data;struct Node* next;}ListNode,*LinkList;LinkList CreateCycList(int n);//创建循环单链表void DisplayCycList(LinkList head);LinkList Link(LinkList head1,LinkList head2);
函数的定义
#include "循环链表.h"LinkList CreateCycList(int n){ListNode *p,*q;LinkList head = NULL;ElemType e;int i = 1;q = NULL;while(i <= n){printf("请输入第%d个元素:",i);scanf("%d",&e);if(i == 1){head=(LinkList)malloc(sizeof(ListNode));head->data = e;head->next = NULL;q = head;//第一个结点q始终指向最后一个结点}else{p = (LinkList)malloc(sizeof(ListNode));p->data = e;p->next = NULL ;q->next = p;q = p;//q始终指向最后一个结点}i++;}if(q != NULL){q->next = head;//将最后一个结点的指针指向头结点指针,形成循环链表}return head;}void DisplayCycList(LinkList head){ListNode *p;p = head;if(p == NULL){printf("该链表是空表");return;}while(p->next != head){printf("%4d",p->data );p = p->next ;}printf("%4d\n",p->data);}LinkList Link(LinkList head1,LinkList head2){ListNode *p,*q;p = head1;q = head2;while(p->next != head1){p = p->next ;}while(q->next != head2){q = q->next ;}p->next = head2;q->next = head1;return head1;}
函数的应用
#include "循环链表.h"int main(void){LinkList h1,h2;int n;printf("创建一个单链表h1:\n");printf("请输入元素个数:");scanf("%d",&n);h1 = CreateCycList(n);printf("创建一个单链表h2:\n");printf("请输入元素个数:");scanf("%d",&n);h2 = CreateCycList(n);printf("输出循环单链表h1:\n");DisplayCycList(h1);printf("输出循环单链表h2:\n");DisplayCycList(h2);h1 = Link(h1,h2);printf("输出连接后的循环单链表h1+h2:\n");DisplayCycList(h1);return 0;}
0 0
- 有两个循环单链表,头指针分别是head1和head2,实现算法将链表head2连接到head1之后,连接后的链表仍然是循环链表的形式
- 用递归方法实现两个链表head1和head2各自有序,请把它们合并成一个链表仍然有序。(c/c++)
- 将两个有序链表head1 head2,合并为一个链表
- 将两个有序链表head1、head2合成一个有序链表
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,要求用递归方法进行。
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。使用非递归方法以及递归方法。
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 设ha和hb分别是两个带头节点的费递减有序单链表的表头指针,设计以算法,将将两个有序链表合成一个非递减的有序单链表,该程序以以前发表的博客中的链表中的区别在与该立案表带有头结点
- 【C++】合并两个排序的链表,要求合并后仍然是有序的
- (含头指针以及尾指针)循环双向链表各类功能的实现
- 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
- 雅虎面试题─有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
- 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
- Android PackageManagerService详细分析
- 为什么Android手机总是越用越慢?
- iOS开发技术的核心摘要
- 关于重装系统时读取不到硬盘和设置主板AHCI蓝屏问题
- HTTPS过程详解
- 有两个循环单链表,头指针分别是head1和head2,实现算法将链表head2连接到head1之后,连接后的链表仍然是循环链表的形式
- android 用aidl实现进程间的通信
- Android开发帮助文档Doc打开速度慢解决_Python篇
- poj2517And Then There Was One 约瑟夫问题
- 低功耗设计二之Bypassing(旁路)
- URAL 1057 Amount of Degrees (数位DP)
- 约瑟夫问题用链表实现
- 冬令营二月四号工作日志
- 两种Eclipse UML 插件ModelGoon和AmaterasUML