| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 264 人关注过本帖
标题:如何用单向链表实现双向作用?
只看楼主 加入收藏
coroner
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-3-15
结帖率:100%
收藏
 问题点数:0 回复次数:0 
如何用单向链表实现双向作用?
某火车站铁轨铺设如图,有n节车厢自A方向进入车站,按进站方向编号为1~n。现对其进行编组,编组过程可借助中转站C,其中C可停靠任意多车厢,由于C末端封顶,故驶入C的车辆必须按相反方向驶出。对每个车厢,一旦自A进入C,就不能再驶入A;且一旦自C驶入B,再不能返回C。给定n值,请判断某个车厢编组是否可能。

Input
输入由许多块组成。除了最后一块,每块描述了一列火车,而且可能有多组重构要求。每块的第一行是上文中提到的整数N,接下来每行是1, 2, ..., N的一个排列,该块的最后一行只包含一个0。
最后一块只包含一个0。
Output
对应的判定结果。 每组测试样例之间用空行隔开。
Sample Input
5
1 2 3 4 5
5 4 1 2 3
0
6
6 5 4 3 2 1
0
0
Sample Output
Yes
No

Yes









我用单向做的
#include<stdio.h>
#include<stdlib.h>
struct train{

    int num;
    struct train *next;
};
train *creat(int n)
{
    struct train *p1,*p2,*p3;
    int i=n;
   
    p1=new train;
    p1->next=NULL;
    while(i>0)
    {
        p2=new train;
        p2->num=i;
        p2->next=p1->next;
        p1->next=p2;
        if(i==n)
        {
            p3=p1;
        }
        i--;
    }
    return p3;

}


int main()
{
    struct train *head,*p1,*p2,*p0,*p3;
    int n,a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    head=creat(n);

    p0=new train;
    p1=new train;
    p2=new train;
    p3=new train;
    p4=new train;
    p0=NULL;
    p0->next=head->next;

   
   
        while(p0->num!=a[i])
        {
            p3=p0;   
            p0=p0->next;
        }
        p1=p0;
        p2=p0->next;
        printf("%d",p0->num);
        p3->next=NULL;
        p1->next=NULL;
         for(i=1;i<n;i++)
        {
            if(a[i]==p3->num)
            {
                printf("%d",p3->num);







            }
            if(a[i]>=p2->num)
            {
                p3->next=p2;
                while(p2->num!=a[i])
                {
                    p4=p2;
                    p2=p2->next;
                }
                printf("%d",p2->num);
                p3=p4;
                p4->next=NULL;
                p2=p2->next;


            }
        }
        
   
    return 0;

}


求解:有表情那块要用单连实现双连,要删除 p3,把p3指向原来指向的节点的前一个,肿么做???
搜索更多相关主题的帖子: 火车站 而且 中转站 如何 
2012-03-20 13:48
快速回复:如何用单向链表实现双向作用?
数据加载中...
 
   



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

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