| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1686 人关注过本帖
标题:数据结构
只看楼主 加入收藏
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: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册: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: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
立个标记~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-09-26 01:18
快速回复:数据结构
数据加载中...
 
   



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

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