数据结构与算法系列-线性表-线性表的应用
2013-11-10 16:17
435 查看
需求:
线性表A、线性表B 都是循环链表存储结构,将B链表链接到A链表的后面,合并成一个链表。
线性表A、线性表B 都是循环链表存储结构,将B链表链接到A链表的后面,合并成一个链表。
#include<malloc.h> #include<stdio.h> typedef struct node{ int data; struct node *next; }NODE; NODE *create_circular(){ NODE *head,*q,*p; int a,n; head = (NODE *)malloc(sizeof(NODE)); q = head; printf("\n Input number of the list:"); scanf("%d",&n); head ->data = n; /*表头结点赋值n,即表中结点的个数*/ if(n>0){ printf("Input the list:"); while(n>0){ scanf("%d",&a); /*输入新元素*/ p = (NODE *)malloc(sizeof(NODE)); p->data = a; q->next = p; q = p; n--; } q->next=head; return (head); } } //方法需要放在被调用之前 void print(NODE *head){ NODE *p; p = head->next; printf("output the list of parame:"); while(p != NULL && p->next!=head){ printf("%3d",p->data); p=p->next; } } NODE *connect(NODE *head1,NODE *head2){/*把循环列表a和b合并成一个循环链表。head1和head2分别为两个循环列表的头指针*/ NODE *p,*q; p= head1 ->next; /*指针head1头结点赋值给p*/ // printf("%2d",p->data); while(p->next!=head1)/*查找head1的最后一个结点*/ p=p->next; // printf("%2d",p->data); /*此时p为head1最后一个结点*/ q= head2 ->next; while(q->next!=head2)/*查找head2的最后一个结点*/ q=q->next; p->next = head2->next; /*AB两表链接*/ q->next = head1; free(head2);/*释放B表表头结点*/ return(head1); } main(){ NODE *a,*b,*c,*d; a = create_circular(); b = create_circular(); c= connect(a,b); d = c; printf("\n Output the list"); /*输出链表后的整个链表*/ while(d->next !=c){ d = d->next; printf("%3d",d->data); } }
相关文章推荐
- 数据结构与算法系列-线性表-数组(线性表的推广)
- C# 数据结构与算法系列(三) 线性表之链表
- 数据结构与算法系列-线性表-线式存储结构、链式存储结构
- javascript实现数据结构与算法系列:线性表的静态单链表存储结构
- (c++)数据结构与算法之链表线性表的应用:银行叫号系统
- 数据结构与算法专题之线性表——队列及其应用
- 线性表【项目4 线性表-- 顺序表应用】之一
- 线性表【项目4 线性表-- 顺序表应用】之二
- 数据结构与算法系列-栈-栈的应用
- 数据结构与算法专题之线性表——栈及其应用
- ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇
- 数据结构与算法系列-树-二叉树的遍历(先序、中序、后序)
- 数据结构与算法系列之一:八大排序之堆排序
- 机器学习系列(4)_机器学习算法一览,应用建议与解决思路
- [Scala函数特性系列]——部分应用函数和柯里化
- [置顶] 基于python与mysql的局部加权线性回归应用
- 线性表应用--根据首元素大小移动其他元素到相应位置
- Linux系列-Red Hat5平台下的Iptables防火墙应用(一)翻出老家底——咱们
- Open-E DSS V7 应用系列之十 主动/主动 iSCSI群集部署(二)
- 【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)