C++输出单链表倒数第K个结点值

问题要求://输入一个单向链表,输出单链表倒数第k个结点值,其输入格式为:
k 整数1 整数2 整数3…输出为倒数第k个结点的值,若没有,则输出Not found
我对此写出的代码为(设置链表元素的个数为一个常数,即元素个数n=10):
#include
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

using namespace std;
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*linklist;
bool initiallist(linklist &l)//单链表的初始化
{
l=new Lnode;
l->next=NULL;
return 1;
}
bool getlinelist(linklist &l,int n)//输入单链表
{
linklist t,r;
r=l;
for(int p=1;p<=n;p++)
{
t=new Lnode;
cin>>t->data;
t->next=NULL;
r->next=t;
r=t;
}
return true;

}
int locateelem(linklist l,int k,int n)//寻找函数,返回值为倒数第k个结点的值
{
{
int m=0;
while(m!=n-k)
{
l=l->next;
m++;
}
return l->next->data;
}
}
int main(void)
{
int k,n=10;
linklist l;
initiallist(l);
cin>>k;
getlinelist(l,n);
locateelem(l,k,n);
if(n-k>=0)
{
cout<<locateelem(l,k,n);
}
else
cout<<“Not found”<<endl;
return 1;
}
在执行时,测验发现,对于正常的k<=10时,都能正确的反馈出结果。
但是,当k>10时,却不能正确输出Not found.问题如图
在这里插入图片描述
现在急需解决的问题是:1.输入一个不定长的字符串(就是输入几个元素,链表长度就是几的那种)
2.如何正确通过cout语句输出Not found(这个我输出不了正确结果),尝试了很多种方法,cout<<“Not found”<<endl; cout<<“Not found”; 都试过了,都输出不了正确结果,希望大佬可以解答一下。
另外如果是定长的话,在n-k>=0的情况下,以上这个代码似乎都是可以得出正确结果的。
另外软件我用的是codeblocks,可以帮助解决一下这个问题。= =

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值