有没有自动加好友软件群软件好用点的

博客访问: 32518
博文数量: 13
博客积分: 197
博客等级: 入伍新兵
技术积分: 140
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
非递归算法应该不难,用递归的思想也能完成这个工作。
/***********************************
*链表降序排列
*Author:ckh
************************************/
node * mergelink(node *head1 , node *head2){
&&&&node *tmp=NULL;
&&&&//如果两个指针都为空,则结束执行
&&&&if(head1 == NULL && head2 == NULL)
&&&&&&&&return tmp;
&&&&//如果一个链表为空,则只要返回另一个链表剩下部分的第一个节点即可
&&&&else if (head1 == NULL)
&&&&&&&&return head2;
&&&&else if (head2 == NULL)
&&&&&&&&return head1;
&&&&&&&&//如果两个指针均不为空,则递归处理
&&&&&&&&if(head1 -> data > head2 ->data){
&&&&&&&&&&&&tmp = head1;
&&&&&&&&&&&&tmp -> next =mergelink(head1 -> next , head2);
&&&&&&&&} else {
&&&&&&&&&&&&tmp = head2;
&&&&&&&&&&&&tmp -> next =mergelink(head1 , head2 -> next);
&&&&return tmp;
阅读(3345) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。数据结构【两个有序顺序表的合并】,编写一个用顺序存储结构实现将两个有序表合成一个有序表的算法
来源:网络
关键字: 数据结构 顺序 合并
更新时间:
延伸:本文除了聚合《数据结构【两个有序顺序表的合并】》,免费提供的有关数据结构 顺序 合并和编写一个用顺序存储结构实现将两个有序表合成一个有序表的算法的内容之一,已有不少的网友认为此答案对自己有帮助!获取更多与《》相关的知识。
网友0的回答
用数组写了个思路,如果你们要求用链表的话改一下就可以了: /* 把num1 num2 合并,输出到n网友1的回答
#include &stdio.h& #include &malloc.h& #include &s网友2的回答
设计一个算法,将两个元素有序(从小到大)的顺序表合并成一个有序顺序表…… 提示上说是二路归并 刚学数网友1的回答
#include&stdio.h& void merger(int d1[10],int t1,in网友0的回答
用顺序存储实现两个线性表合并数据结构 cjj1004 推荐于 19:p网友1的回答
你可以先设一个线性表C,再比较A和B中第一个元素谁小的放到C中,如果是A中的小,A取后一个元素和B中网友2的回答
你可以好好去看一下《数据结构》中链表这一章,介绍的比较详细,合并、翻转 C网友1的回答
结构使用顺序表的话,,可以先直接内存拷贝方式合并成一个大数组,然后使用快速排序。。快排对于无序的数据网友0的回答
最满意的回答
猜你感兴趣
回答问题赢iPhone 63025人阅读
数据结构(7)
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)
//合并链表La和Lb,合并后的新表使用头指针Lc指向
//pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点
//用La的头结点作为Lc的头结点
while(pa && pb)
if(pa-&data&pb-&data){
//取较小者La中的元素,将pa链接在pc的后面,pa指针后移
else if(pa-&data&pb-&data) {
//取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移
else //相等时取La中的元素,删除Lb中的元素
pc-&next=pa?pa:
//插入剩余段
delete Lb;
//释放Lb的头结点
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:428678次
积分:6532
积分:6532
排名:第3011名
原创:213篇
转载:42篇
评论:58条
文章:102篇
阅读:211291
(1)(2)(4)(8)(4)(1)(2)(9)(2)(13)(3)(5)(3)(7)(12)(17)(18)(42)(102)递增有序的2个单链表合并成一个递增有序的单链表
递增有序的2个单链表合并成一个递增有序的单链表,不用任何库函数调用
#include &iostream&
struct node
void insertNode(node* head, int value)
node* p = head-&
if ( p == NULL )
&& p-&value =
&& p-&next =
&& head-&next =
while ( p-&next != NULL )
node* tmp =
tmp-&value =
tmp-&next = NULL;
void print(node* head)
node* p = head-&
while ( p != NULL )
&& p-&value
node* formalMerge(node* headA, node* headB)
node* head =
head-&next = NULL;
node* p = headA-&
node* q = headB-&
if ( p == NULL )
&& return headB;
if ( q == NULL )
&& return headA;
while ( (p != NULL) && (q != NULL)
&& if ( p-&value
== q-&value )
insertNode(head, p-&value);
insertNode(head, q-&value);
&& else if (
p-&value & q-&value
insertNode(head, p-&value);
&& else if (
p-&value & q-&value
insertNode(head, q-&value);
while ( p != NULL )
&& insertNode(head,
p-&value);
while ( q != NULL )
&& insertNode(head,
q-&value);
void chg2sort(node* head, node* &p)
if (head-&next == NULL ) //没有节点,直接返回
while ( s-&next != p ) //s指向p的前一个节点
//下面的一段找到第一个大于p节点值的节点
while ( q != NULL )
&& if ( q-&value
&= p-&value )
//r始终指向q的前一个节点
//下面调整指针,其实可以统一写出来,为了阅读清晰把q为NULL和非NULL分开写出来
if ( q == NULL )
&& r-&next =
&& s-&next =
&& p-&next =
else if ( q != NULL )
&& s-&next =
&& r-&next =
&& p-&next =
//由于链表进行了调换,当前链表指针也需要改变
node* merge(node* head1, node* head2)
node* //合并后的头指针
node* p = head1-&
node* q = head2-&
//有一个链表为空的情况,直接返回另一个链表
if ( p == NULL )
&& head = head2;
else if ( q == NULL )
&& head = head1;
//两个都不为空,先确定哪个链表作为合并后的链表
if ( (p != NULL) && (q != NULL)
&& if ( p-&value
& q-&value )
&&& head =
&&& head =
node* p_ //始终指向p节点的前一个节点
while ( (p != NULL) && (q !=
&& if ( p -&value
& q-&value )
&&& if ( head ==
&&& else if (
head == head2 )
//进行当前节点值的交换
int tmp = p-&
p-&value = q-&
q-&value =
chg2sort(head1, p); //交换元素后的调整
&& else if (
p-&value == q-&value )
&&& p_prior =
&&& q_prior =
&& else if (
p-&value & q-&value
&&& if ( head ==
int tmp = p-&
p-&value = q-&
q-&value =
chg2sort(head2, q);
&&& else if (
head == head2 )
if ( p != NULL )
&& q_prior-&next =
if ( q != NULL )
&& p_prior-&next =
int main()
int a[5] = {1, 5, 8, 10, 20};
node* headA =
headA-&next = NULL;
for (int i = 0; i & 5; ++i)
&& insertNode(headA, a[i]);
print(headA);
int b[3] = {3, 4, 9};
node* headB =
headB-&next = NULL;
for (int i = 0; i & 3; ++i)
&& insertNode(headB, b[i]);
print(headB);
node* head = formalMerge(headA, headB);
print(head);
int c[3] = {5, 4, 9};
node* headC =
headC-&next = NULL;
for (int i = 0; i & 3; ++i)
&& insertNode(headC, c[i]);
print(headC);
//test chg2sort
chg2sort(headC, headC-&next);
print(headC);
head = merge(headA, headB);
print(head);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 自动加好友软件 的文章

 

随机推荐