| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 450 人关注过本帖
标题:数据结构
只看楼主 收藏
dgc666
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-9-24
结帖率:0
  已结贴   问题点数:20  回复次数:2   
数据结构
设单循环链表 L1,对其遍历的结果是 。请将该循环链表拆
成两个单循环链表 L1 和 L2,使得 L1 中含有原 L1 表中序号为奇数的结点且遍历
结果为 ,L2 中含有原 L1 中序号为偶数的结点且遍历结果为 。
并选择自己擅长的程序设计语言实现本算法写出对应的程序。
2017-09-24 15:45
xzlxzlxzl
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:湖北
等 级:贵宾
威 望:99
帖 子:1011
专家分:5403
注 册:2014-5-3
  得分:10 
下述代码不知道是否达到题主要求
程序代码:
#include <stdlib.h>
#include <stdio.h>
struct node
{
    int a;
    struct node *next;
};
void print(node *p)
{
    while(p)
    {
        printf("%d ",p->a);
        p=p->next;
    }
    printf("\n");
}
void main()
{
    struct node *l1,*l2,*hl1,*hl2,*p,*head=NULL;
    int i;
    for(i=0;i<15;i++)               //15可换成16,对总链表节点数的奇偶进行验证
    {
        p=(node*)malloc(sizeof(node));
        p->a=i;
        p->next=NULL;
        if(!head)head=l1=p;
        else l1=l1->next=p;
    }
    print(head);                     //输出原始链表
    hl1=l1=head;                     //偶数链表头指针
    hl2=l2=l1->next;                 //奇数链表头指针
    while(l1->next&&l2->next)
    {
        l1=l1->next=l1->next->next;  //分解形成偶数链表
        l2=l2->next=l2->next->next;  //分解形成奇数链表
    }
    if(l1)l1->next=NULL;
    if(l2)l2->next=NULL;             //分解的链表得到正确的结尾
    print(hl1);                      //输出偶数链表
    print(hl2);                      //输出奇数链表
}


输出结果:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 2 4 6 8 10 12 14
1 3 5 7 9 11 13
Press any key to continue
2017-09-24 21:27
九转星河
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:长长久久
等 级:版主
威 望:28
帖 子:4141
专家分:11825
注 册:2016-10-22
  得分:10 
立个标记~

[code]/*~洗洗睡吧,梦里可以干很多事情哩~2018-01-19更~*/[/code]
2017-09-26 01:18







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

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