将带头结点的有序单链表A和B合并成一个新的有序表C……
来源:互联网 发布:斗鱼主播用的直播软件 编辑:程序博客网 时间:2024/05/20 06:41
问题链接……
运行结果:
#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;LinkList link(LinkList S,LinkList T)//将S,T链接成新的链表并返回新链表指针……以S的顺序为主排序返回……{ LinkList p,q,r,s,t;int k=0;s=S;t=T;if(s->next->data<s->next->next->data)k=1;//用k来控制S为递增或递减的操作k==1代表升序的操作 p=q=(LinkList)malloc(sizeof(LNode));//带头节点 while(s->next!=NULL)//复制S链表 { r=(LinkList)malloc(sizeof(LNode)); r->data=s->next->data; q->next=r; q=r; s=s->next; }q->next=NULL;q=p; while(t->next!=NULL)//链接复制T链表 { while(k==1&&q->next!=NULL&&q->next->data<=t->next->data||k==0&&q->next!=NULL&&q->next->data>=t->next->data)//用或来区别S是升序还是降序,来进行不同操作,得到不同顺序表q=q->next;if(q->data!=t->next->data)//如果存在相同元素,继续下一个而不存入新表中{r=(LinkList)malloc(sizeof(LNode));r->data=t->next->data;r->next=q->next;q->next=r;}q=p; t=t->next; } return p; //返回复制链表指针}void main(){ LinkList S,T,P,q,r; int k=0; S=q=(LinkList)malloc(sizeof(LNode));//S带头节点 while(20-k) //为S分配空间及赋值 { r=(LinkList)malloc(sizeof(LNode)); r->data=k; q->next=r; q=r; k+=2; } q->next=NULL; //S的最后一个节点的下一个节点置空 k=19; T=q=(LinkList)malloc(sizeof(LNode)); //T带头节点 while(k>0) //为T分配空间及赋值 { r=(LinkList)malloc(sizeof(LNode)); r->data=k; q->next=r; q=r; k-=2; } q->next=NULL; //T的最后一个节点的下一个节点置空 P=link(S,T); //调用函数得到S,T链接后的新链表,S,T的顺序调换,可能得到不同顺序表//下面为输出各链表的值 printf("S:\n"); while(S->next!=NULL) { printf("%d ",S->next->data); S=S->next; } printf("\nT:\n"); while(T->next!=NULL) { printf("%d ",T->next->data); T=T->next; } printf("\nP:\n"); while(P->next!=NULL) { printf("%d ",P->next->data); P=P->next; } printf("\n\n");}
- 将带头结点的有序单链表A和B合并成一个新的有序表C……
- 将两个递增有序的带头结点的单链表A、B合并成为一个递增有序的带头结点的单链表
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 将有序表A、B合并为有序表C
- 将两个有序链表合并成一个新的有序链表
- 将两个递增有序的单链表合并成一个递减有序的单链表,利用原结点空间
- 将两个递增有序的单链表合并成一个递减有序的单链表,利用原结点空间
- 若干有序序列,合并成一个新的有序序列
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表实现文件C语言
- 将两个带头节点链表单链表,合并成一个新的带头节点链表……
- 将两个有序表合并成一个非递减的有序表算法
- 合并两个有序数组为一个新的有序数组
- 创新工场笔试题目--将两个有序的链表合并为一个新的链表(保留所有结点,即使大小相同)
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表头文件C语言
- 编程分别输入两个按从小到大排序的数组a和b,将这两个有序数组合并,使合并后的数组仍有序 (从小到大)
- c++ 将两个有序的单链表AB合并到新的单链表C中
- 将两个递增的有序链表合并为一个递增的有序链表(C语言编程实现)
- 有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,
- ASP.NET MVC 已经删除edmx了却提示冲突解决办法
- Android代码布局,baseadapter很需要的哦!
- 黑马程序员-程序异常
- 托盘功能的实现(MFC)
- SQL---DDL---删除表DROP TABLE语句
- 将带头结点的有序单链表A和B合并成一个新的有序表C……
- 提示小窗体方法
- 书买了,估计这个星期就到了
- 今天的心知识。数据库的联动
- flock
- android Layout之RelativeLayout(一)
- 最简单的模块——hello world
- adndroid service生命周期
- UML