标题:谁能帮我编出来,我把分全给他!!!
只看楼主
zitong1987611
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-4-18
 问题点数:0 回复次数:13 
谁能帮我编出来,我把分全给他!!!
已知两个链表A和B,其元素值递增排列。编程,将A和B合并成一个递减有序(相同值只保留一个)的链表C,并要求利用原表结点。就这个题,谢谢了,我实在不会编了。
搜索更多相关主题的帖子: 链表 结点 排列 元素 递减 
2008-04-24 22:40
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
得分:0 

又在这里找作业答案>>>>

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-24 22:56
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
楼主可以按照以下方法:
1、建立一个表C,定义两个结点指针ptrA,ptrB分别指向A,B链表的第一个结点.
2、比较两个指针所指的结点的数据域的大小,将最小的插入到C链表中的第一个结点的位置,当ptrA->data<ptrB->data时,ptrA=ptrA->next;当ptrA->data>ptrB->data时,ptrB=ptrB->next;当ptrA->data==ptrB->data时,ptrA=ptrA->next,ptrB=ptrB->next;
3、重复第2步,直到插入结点完毕。

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2008-04-25 02:00
孤獨
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-1-25
得分:0 
楼上的不厚道还卖<<C语言库函数查询器>>,网上开源的lcc编译器,自己就带。。。
2008-04-26 10:17
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
这是我做的.
它的功能很强大,比南开大学开发的还好用.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2008-04-28 22:39
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
得分:0 
哈哈哈哈,不厚道的人多着呢
等偶最近这时间要忙的事做得差不多了,偶也来搞一个
软件免费的,演示代码是彩色高亮的,还能实时编译演示的

" border="0" />[color=white]
2008-04-28 23:21
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
得分:0 
高手哦!太厉害了,比南开的还强大。
o(∩_∩)o...

我秀我自己
2008-04-28 23:40
hellbelial
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-4-29
得分:0 
一段已经十分完善的代码,从生成到显示都已经有了:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct Node
{
    int data;
    Node* next;
}*LNode;

void Add(LNode &link, int e)
{
    LNode p = link;
    LNode q = (LNode)malloc(sizeof(Node));
    q->next = NULL;
    LNode s = link->next;
    q->data = e;
    while(s)
    {
        if(s->data>=e)break;
        p = p->next;
        s = s->next;
    }
    q->next = s;
    p->next = q;
}

void Merge(LNode &A, LNode &B, LNode &C)
{
    LNode p = A->next;
    LNode t = A;
    LNode q = B->next;
    LNode k = B;
    LNode s = C;
    LNode m = NULL;
    while(p&&q)
    {
        while(p->next)
        {
            t = t->next;
            p = p->next;
        }
        while(q->next)
        {
            k = k->next;
            q = q->next;
        }
        if(p->data>q->data)
        {
            if(s->next == NULL)
                s->next = p;
            else m = p;
            t->next = NULL;
        }
        if(p->data == q->data)
        {
            m = p;
            k->next = NULL;
            free(q);
        }
        if(p->data<q->data)
        {
            if(s->next == NULL)
                s->next = q;
            else m = q;
            k->next = NULL;
        }
        if(m!=NULL)
        {
            if(m->data == s->data)
                free(m);
            else s->next = m;
        }
        p = A->next;
        t = A;
        q = B->next;
        k = B;
        s = s->next;
    }
    p = A->next;
    t = A;
    q = B->next;
    k = B;
    while(p)
    {
        while(p->next)
        {
            t = t->next;
            p = p->next;
        }
        if(p->data != s->data)
        {
            s->next = p;
            s = s->next;
        }
        else free(p);
        t->next = NULL;
        t = A;
        p = A->next;
    }
    while(q)
    {
        while(q->next)
        {
            k = k->next;
            q = q->next;
        }
        if(q->data > s->data)
        {
            s->next = q;
            s = s->next;
        }
        else free(q);
        k->next = NULL;
        k = B;
        q = B->next;
    }
}

void Print(LNode link)
{
    LNode p = link->next;
    while(p)
    {
        printf("%4d",p->data);
        p = p->next;
    }
    printf("\n");
}

int main()
{
    LNode A = (LNode)malloc(sizeof(Node));
    LNode B = (LNode)malloc(sizeof(Node));
    LNode C = (LNode)malloc(sizeof(Node));
    int lenA = 0, lenB = 0;
    int x = 0, y = 0;
    srand((unsigned)time(0));
    A->next = NULL;
    B->next = NULL;
    C->next = NULL;
    printf("A表长度:");
    scanf("%d", &lenA);
    printf("B表长度:");
    scanf("%d", &lenB);
    /*生成数据*/
    while(lenA>0||lenB>0)
    {
        if(lenA>0)
        {
            x = rand()&255;
            if(x>=0)
            {
                Add(A, x);
                lenA--;
            }
        }
        if(lenB>0)
        {
            x = rand()&255;
            if(x>=0)
            {
                Add(B, x);
                lenB--;
            }
        }
    }
    printf("A:");
    Print(A);
    printf("B:");
    Print(B);
    Merge(A,B,C);
    printf("C:");
    Print(C);
    return 0;
}


[[it] 本帖最后由 hellbelial 于 2008-4-29 04:31 编辑 [/it]]
2008-04-29 04:30
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
得分:0 
[bo]以下是引用 [un]neverTheSame[/un] 在 2008-4-28 22:39 的发言:[/bo]

这是我做的.
它的功能很强大,比南开大学开发的还好用.

为什么和南开大学开发的比较?

" border="0" />[color=white]
2008-04-30 00:02
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
楼上,我对你的想法很感兴趣.
很期待你的作品能早日发布.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2008-04-30 00:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-210919-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.360459 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved