循环链表的简单应用
来源:互联网 发布:ios wkwebview js弹窗 编辑:程序博客网 时间:2024/05/21 06:21
#include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef int DataType;typedef struct Node{DataType data;struct Node* next;}ListNode, *LinkList;LinkList CreateCycList(int n);//创建循环单链表 void DisplayCycList(LinkList head);//显示输出循环单链表LinkList Link(LinkList head1, LinkList head2);//连接两个单链表void main( ){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);}LinkList CreateCycList(int n){DataType e;LinkList head = NULL;ListNode *p, *q;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;while (p->next != head1) //指针p指向链表的最后一个结点{p = p->next;}q = head2;while (q->next != head2) //指针q指向链表的最后一个结点{q = q->next;}p->next = head2; //将第一个链表的尾端连接到第二个链表的第一个结点q->next = head1; //将第二个链表的尾端连接到第一个链表的第一个结点return head1;}
1
0 0
- 循环链表的简单应用
- Linux内核中循环链表的简单应用
- c语言 双向循环链表的简单应用
- 单向循环链表简单应用
- for循环的简单应用
- for循环的简单应用
- for循环的简单应用
- 简单的循环链表
- 循环链表的简单应用(约瑟夫环问题场景)
- 循环链表的操作和应用
- 对循环链表的应用
- 双向循环链表的应用
- 单向循环链表的应用
- 双向循环链表的应用
- 循环链表应用
- 单向循环链表的简单实现
- 双向循环链表的简单实现
- 循环链表的简单实现
- 一个经典例子让你彻彻底底理解java回调机制
- [原创] 在.Net程序中嵌入Chrome浏览器内核(二)
- 安卓 listView的点击监听和滑动监听 setOnScrollListener setOnTouchListener
- python简单实例训练(21~30)
- Javaw.exe 正确打开方式
- 循环链表的简单应用
- VM 克隆的 centos 的Linux下网卡eth1如何修改为eth0解决办法
- 循环链表--约瑟夫问题
- 双向链表的应用
- 静态链表的应用
- 各种线性表的操作
- 线性表---就地逆置
- android studio 配置 SVN 详解
- 7