数据结构-单链表节点的获取

数据结构-单链表节点的获取

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:273            测试通过:164

描述

单链表节点的获取操作是线性表数据结构对象操作的重要内容,请您写一个程序完成对一个单链表某一个节点的获取操作。

请用如下函数完成上述功能,线性表List的定义如下(强烈建议使用下面的定义和函数结构)

typedef struct LNode
{
Elemtype data;
struct LNode *next;
}LNode,*LinkList;

int GetElem_L(LinkList L,int i,Elemtype &e)

输入

输入有多组测试数据,每组测试数据包括1行,用空格隔开的1个数字和多个字母,数字表示要获取节点在单链表中的位置,后面的字母表示单链表的当前的内容。

输出

如果获取失败,输出ERROR,否则输出OK,并输出获取节点的内容。

样例输入

2 L2 = (HK)
14 L3 = (ADFIKLMORUVWX)

样例输出

GetElem_L(L2, 2, e) = OK,  e = 'K'
GetElem_L(L3, 14, e) = ERROR


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char e;
typedef char Elemtype;
typedef struct LNode
{
    Elemtype data;
    struct LNode *next;
} LNode,*LinkList;
void InitList_L(LinkList &L)
{
    L=new LNode;
    L->next=NULL;//头结点
    char c;
    while(cin>>c&&c!='(') {}
    while(cin>>c&&c!=')')
    {
        LinkList p=new LNode;
        p->data=c;
        L->next=p;
        L->data=p->data;
        p->next=NULL;
    }
}
int GetElem_L(LinkList L,int i)
{
    int j=1;
    LinkList p=new LNode;
    p=L->next;
    while(p&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p||j>i)
        return 0;
    e=p->data;
    return 1;
}
int main()
{
    LNode *a;
    char s[21];
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        getchar();
        scanf("%s",s);
        InitList_L(a);
        if(GetElem_L(a,n)==1)
        {
            printf("GetElem_L(%s, %d, e)",s,n);
            printf(" = OK,  e = '%c'",e);
        }
        else
        {
            printf("GetElem_L(%s, %d, e)",s,n);
            printf(" = ERROR");
        }
        printf("\n");
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值