| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 710 人关注过本帖
标题:如何在循环单链表的查找某个位置的值
只看楼主 加入收藏
零距离98
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-12-9
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
如何在循环单链表的查找某个位置的值
int GetElem(CLinkList *L,int i,ElemType &e)        
{
    int j=0;
    CLinkList *p=L;
    if(p->next==L)
        return 0;
    while(j<i-1&&p->next!=L)
    {
        j++;
        p=p->next;
    }
    e=p->data;
    return 1;
}
我这样的算法总是找不到最后一个元素,希望各位帮我解决这个问题!多谢!
搜索更多相关主题的帖子: 元素 
2011-03-31 20:49
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:10 
我觉得应该这样:
 while(j<i&&p->next!=L)
    {
          p=p->next;
          j++;

    }

编程的道路上何其孤独!
2011-03-31 21:50
零距离98
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-12-9
收藏
得分:0 
还是不行啊,其实你的跟我的是一样的
2011-03-31 23:51
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:10 
程序代码:
//我这样的算法总是找不到最后一个元素,希望各位帮我解决这个问题!多谢!
#include <stdio.h>
#include <malloc.h>

typedef struct node
{
    short data;
    struct node * next;
}CLinkList;
//构建担循环链表
CLinkList * create_clist( CLinkList *L )
{
    CLinkList *header, *temp;
    short d;

    while( scanf("%d", &d) )
    {
        if( NULL == L )
        {
            L = (CLinkList *) malloc (sizeof(CLinkList));
            L->data = d;
            L->next = L;
            header = L;
        }
        else
        {
            temp = (CLinkList *) malloc (sizeof(CLinkList));
            temp->data = d;
            temp->next = header->next;
            header->next = temp;
            header = temp;
        }
    }

    return L;
}

void print( CLinkList *L )
{
    CLinkList *temp = L;
    if( NULL == L )
    {
        printf("\tno data!\n");
        return;
    }
   
    do
    {
        printf("%d ", temp->data );
        temp = temp->next;
    }while( temp != L );
    printf("\n");

    return;
}

int GetElem( CLinkList *L, int i )       
{
    CLinkList *temp = L;
    short return_e;

    if( NULL == L )
    {
        printf("\tno data!\n");
        return 0;
    }
   
    if( 0 == i )
    {
        printf("\ti=!0\n");
        return 0;
    }
    do
    {
        return_e = temp->data;
        temp = temp->next;
    }while( --i && temp != L );

    if( 0 != i )
    {
        printf("\tcann't found!\n");
        return 0;
    }

    return return_e;
}

int main()
{
    CLinkList *L = NULL;

    L = create_clist( L );

    print( L );

    printf("%d \n", GetElem( L, 7 ) );

    return 0;
}
2011-04-01 09:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-04-01 09:25
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
没有数据输入:
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-04-01 09:26
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
查找位置没有数据:
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-04-01 09:27
快速回复:如何在循环单链表的查找某个位置的值
数据加载中...
 
   



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

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