创建循环双链表,并进行两个链表合并操作
来源:互联网 发布:成都php找工作很难2017 编辑:程序博客网 时间:2024/06/05 22:39
创建循环双链表,并进行两个链表合并操作
L1={1,2,3,4,5,6},L2={11,22,33,44,55,66}当i=0时,将L2链接到L1前,i大于0小于6时,插入第i个位置,i大于6是,链接到L1后面
实现代码:
#include <stdio.h>#include <stdlib.h>typedef struct DNode{int data;struct DNode *prior;struct DNode *next;}DLinkNode;void CreateF(DLinkNode *&L,int a[],int n){DLinkNode *s,*L1;L=(DLinkNode*)malloc(sizeof(DLinkNode));L->prior=L->next=L;L1=L;for(int i=0;i<n;i++){s=(DLinkNode*)malloc(sizeof(DLinkNode));s->data=a[i];L1->next=s;s->prior=L1; s->next=L;L->prior=s;L1=s;}}void Insert(DLinkNode *&ha,DLinkNode *&hb,int i){DLinkNode *p=ha->next,*post;int lena=1,j;while(p->next!=ha){lena++;p=p->next;}if(i==0){p=hb->prior;//由于ha头结点要摘下来,所以必须这么做 p->next=ha->next;//要画图才能容易地看出关系 ha->next->prior=p;ha->next=hb->next;hb->next->prior=ha;}else if(i<lena){j=1;p=ha->next;//前面改变了p,所以这里要还原 while(j<i){p=p->next;//找到待插入点前面结点 j++;}post=p->next;p->next=hb->next;hb->next->prior=p;hb->prior->next=post;post->prior=hb->prior;}else{ha->prior->next=hb->next;hb->next->prior=ha->prior;hb->prior->next=ha;ha->prior=hb->prior;}free(hb);} void Show(DLinkNode *L){DLinkNode *p=L->next;while(p!=L){printf("%d ",p->data);p=p->next;}}int main(int argc, char *argv[]){int i,a[6]={1,2,3,4,5,6},b[6]={11,22,33,44,55,66}; DLinkNode *L1,*L2;CreateF(L1,a,6);CreateF(L2,b,6);printf("输出L1序列:");Show(L1);printf("\n输出L2序列:");Show(L2);printf("\n输如需要插入的位置i:");scanf("%d",&i);Insert(L1,L2,i);printf("输出插入后序列:");Show(L1);printf("\n");return 0;}
输出结果:
输出L1序列:1 2 3 4 5 6输出L2序列:11 22 33 44 55 66输如需要插入的位置i:8输出插入后序列:1 2 3 4 5 6 11 22 33 44 55 66请按任意键继续. . .
阅读全文
0 0
- 创建循环双链表,并进行两个链表合并操作
- 两个循环链合并
- 将两个有序链表进行合并
- 合并两个链表并排序
- 创建顺序表并进行一系列操作
- P318_118 合并两个链表,并按照学号升序排列。用类冒泡排序法对链表进行排序
- 合并两个循环单链表
- 合并两个链表,两个表的元素交叉进行,合并之后合并后的链表变成空表
- C++实现两个已经排序的链表进行合并
- C++实现两个已经排序的链表进行合并
- C++实现两个已经排序的链表进行合并
- 链表操作————合并两个链表,并同时删除两链表中的公共元素结点
- 链表合并 求两个递增链表的并
- 静态创建顺序表,并进行插入删除操作
- 动态创建顺序表,并进行插入删除操作
- 单链表(创建,打印,逆序,合并两个有序的链表)
- 带头节点的循环链表及两个循环链表的合并
- C语言用带头节点的链表创建多项式并进行相关操作
- 图论基础知识(四)
- win10x64下安装ghost版win7 x64的双系统,进入win7x64系统卡死在启动画面解决方法
- webappbuilder改为不依赖portal之arcgis for js4.系列
- Reinforcement Learning 一:历史发展背景与介绍
- Excel在统计分析中的应用—第九章—非参数检验-简单符号检验
- 创建循环双链表,并进行两个链表合并操作
- 差分麦克风阵列(Differential microphone arrays)
- 【阅读】目标识别算法目录
- GYM-101572A Airport Coffee(DP+单调队列)
- laravel 表单提交-POST 异常
- 磁盘共享之ISCSI
- Parrot Security OS安装搜狗拼音
- 山科大OJ之Print Graphics Problerm (IV) (Append Code)
- 关于Nginx 502的一种解决办法