| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6548 人关注过本帖
标题:编写一程序,将带头结点的单链表拆成一个奇数链表和一个偶数链表
只看楼主 加入收藏
buhongwei
Rank: 1
来 自:1111
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-31
收藏
 问题点数:0 回复次数:5 
编写一程序,将带头结点的单链表拆成一个奇数链表和一个偶数链表
求助   编写一程序,将带头结点的单链表拆成一个奇数链表和一个偶数链表。

 
各位高手告诉我吧!
最好是星期一之前给我谢谢了
搜索更多相关主题的帖子: 链表 结点 偶数 单链 奇数 
2008-10-31 20:46
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
最好自己试着编写吧,
给你个算法思路:
(1)通过键盘输入数据建立一个链表L
(2)建立两个空连标L1和L2
(3)
ListNode<T>*  ptr1=L2.first;         //L1游标指针
ListNode<T>*  ptr2=L2.first;         //L2游标指针
while(L.first->link!=NULL)
{
     if(L.first->link->data%2!=0)
     {
          ptr1->link=L.first->link;
          ptr1=ptr1->link;         
     }
     else
     {
          ptr1->link=L.first->link;
          ptr1=ptr1->link;  
     }
     L.first->link=L.first->link->link;
};
写的是伪代码,没有调试的啊,就是这个思路
收到的鲜花
  • multiple19022008-10-31 22:30 送鲜花  18朵   附言:我喜欢伪代码。
2008-10-31 21:57
鬼手刀客
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2008-10-19
收藏
得分:0 
我写了一个,你参考参考!
#include<stdio.h>
#include<stdlib.h>
typedef  struct  node
{
    int data;
    struct node  *next;
}linknode;
typedef  linknode *linklist;

/*头插法建表*/
linklist creat1()
{
    linklist head,s;
    int x;
    head->next=NULL;
    printf("Please input a list and end by 0!\n");
    scanf("%d",&x);
    while(x)
    {
        s=(linklist)malloc(sizeof(linknode));
        s->data=x;
        s->next=head->next;
        head->next=s;

        scanf("%d",&x);
    }
    return head;
}
/*尾插法建表*/
linklist creat2 ()
{
    linklist head,r,s;
    int x;
    head->next=NULL;
    r=head;
    printf("Please int a list and end by 0!\n");
    scanf("%d",&x);
    while(x)
    {
        s=(linklist)malloc(sizeof(linknode));
        s->data=x;
        r->next=s;
        r=s;
        scanf("%d",&x);
    }
    r->next=NULL;
    return  head;
}
/*打印带头结点单链表*/
void print (linklist head)
{
    linklist p;
    p=head->next;
    while(p)
    {
        printf("%4d",p->data);
        p=p->next;
    }
    printf("\n");
}
void separation(linklist head)
{
    linklist head1,head2,p,r,s;
    head1->next=NULL;
    head2->next=NULL;
    r=head1;
    s=head2;
    p=head->next;
    while(p)
    {
        if(p->data%2!=0)
        {
            r->next=p;
            r=p;
            p=p->next;
        }
        else
        {
            s->next=p;
            s=p;
            p=p->next;
        }
    }
    r->next=NULL;
    s->next=NULL;
    print(head1);
    print(head2);
}
/*主函数*/
main()
{
    linklist head;
    head=creat2();
    print(head);
    separation(head);
    getch();
}
2008-11-01 14:27
iamah
Rank: 1
等 级:新手上路
威 望:1
帖 子:69
专家分:0
注 册:2008-10-31
收藏
得分:0 
就是利用头插法和尾插法
2008-11-02 18:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
头插法建立单链表+删除结点+添加结点

逐一判断链表中的元素,遇到偶的删除再利用头插法建立在新的链表中。

倚天照海花无数,流水高山心自知。
2008-11-02 18:43
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 3# 的帖子
void separation(linklist head)
{
    linklist head1,head2,p,r,s;
    head1=(linklist)malloc(sizeof(linknode)); // 初始化
    head2=(linklist)malloc(sizeof(linknode));
    head1->next=NULL;
    head2->next=NULL;
    r=head1;
    s=head2;
    p=head->next;
    while(p)
    {
        if(p->data%2!=0)
        {
            r->next=p;
            r=p; // r = r->next;
            //p=p->next;
        }
        else
        {
            s->next=p;
            s=p;
            //p=p->next;
        }
        p=p->next; // 公共部分提取
    }
    r->next=NULL;
    s->next=NULL;
    print(head1);
    print(head2);
}

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-05 03:20
快速回复:编写一程序,将带头结点的单链表拆成一个奇数链表和一个偶数链表
数据加载中...
 
   



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

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