赞
踩
1、计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。并把每个单词输出并存储。
示例:
输入:hello nowcoder
输出:8
/*
知识点1:定义字符数组:
const int num = 5001;
char s[num]; //字符数组最后一个字符是不可见字符’\0’
cin.getline(s,num); //cin.getline(字符数组,字符个数,结束标志),第三个参数省略系统默认’\0’
知识点2:字符串流istringstream和ostringstream
istringstream,由 istream 派生而来,提供读 string 的功能
ostringstream,由 ostream 派生而来,提供写 string 的功能
stringstream,由 iostream 派生而来,提供读写 string 的功能
使用上述类时,要带上头文件:
#include <sstream>
代码实现:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> #include <string> #include <sstream> using namespace std; int getLengthofLastWord(string s) { int ridx = s.rfind(' '); int len = s.size(); int lastlen = len - 1 - ridx; return lastlen; } int main() { string s1; //获取字符串 getline(cin,s1); //因为有空格,所以要用getline()函数 int rst=getLengthofLastWord(s1); cout << rst << endl; //存储每个单词 vector<string> res; string out; stringstream stream(s1); while (stream >> out) { cout << out << endl; res.push_back(out); } return 0; }
运行结果:

2、写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: n:[1,1000]
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
代码实现:
#include <iostream> using namespace std; int main() { //输入字符数组 const int num = 1001; char s1[num]; cin.getline(s1,num); //输入字符 char c1; cin >> c1; int cnt = 0; for (int i = 0; s1[i]!='\0'; i++) { if (toupper(s1[i])==toupper(c1)) { cnt++; } } cout << cnt << endl; return 0; }
运行结果:

3、随机生成N个1到500之间的随机数
输入描述:输入随机数个数N,并将这N个随机数输出,每行一个数
输出描述:将随机数从小到大排序后输出,每行一个
代码实现:
#include <iostream> #include <vector> #include <algorithm> //使用sort需要引用该头文件 using namespace std; int Random(int start,int end) { int dis = end - start; return rand() % dis + start; } int main() { int start = 1, end = 500; int N; cin >> N; vector<int> vec; int cnt = 0; for (int i = 0; i < N; i++) { cnt++; int tmp = Random(start,end); vec.push_back(tmp); cout << tmp << endl; } sort(vec.begin(), vec.end()); //默认升序排列,从小到大排序 //reverse(vec.begin(), vec.end()); //降序排列,从大到小 cout << "输出排序结果:" << endl; for (int i = 0; i < vec.size(); i++) { cout << vec[i] << endl; } return 0; }
结果输出:

4、输入n个整数,找出其中最小的k个整数并按升序输出
数据范围:1≤n≤1000 ,输入的整数满足 1≤val≤10000
输入描述:
第一行输入两个整数n和k
第二行输入一个整数数组
输出描述:
从小到大输出最小的k个整数,用空格分开。
代码实现:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> vec; const int max = 1000; int data[max] = { 0 }; for (int i = 0; i < n; i++) { cin >> data[i]; vec.push_back(data[i]); } sort(vec.begin(), vec.end()); for (int i = 0; i < k; i++) { cout << vec[i]<<" "; } return 0; }
运行结果:

5、输入整型数组和排序标识,对其元素按照升序或降序进行排序
数据范围: 1≤n≤1000 ,元素大小满足 0≤val≤100000
输入描述:
第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数0或1。0代表升序排序,1代表降序排序
输出描述:
输出排好序的数字
代码实现:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, bl; cin >> n; const int N = 1000; static int aa[N]; vector<int> vec; if ((n >= 1) && (n <= 1000)) { for (int i = 0; i < n; i++) { cin >> aa[i]; vec.push_back(aa[i]); } } cin >> bl; if (bl == 0) { sort(vec.begin(), vec.end()); } if (bl == 1) { sort(vec.begin(), vec.end()); reverse(vec.begin(),vec.end()); } int sz = vec.size(); for (int i = 0; i < sz; i++) { cout << vec[i] << " "; } return 0; }
运行结果:

6、输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
长度不是8的整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)
输出描述:
依次输出所有分割后的长度为8的新字符串
代码实现:
#include <iostream> #include <vector> using namespace std; int main() { string str; while (cin >> str) { int len = str.size(); if (len > 100) { cout << "请输入小于100的字符" << endl; } else { vector<string> vect; int m = len / 8; for (int i = 0; i < m; i++) { vect.push_back(str.substr(i*8,8)); } if (len % 8 != 0) { int tt = 8 - len % 8; for (int i = 0; i < tt; i++) { str += '0'; } vect.push_back(str.substr(m * 8)); } //if(len%8) vector<string>::iterator it; for (it = vect.begin(); it != vect.end(); ++it) { cout << *it << endl; } } //else } //while() return 0; }
运行结果:

7、HJ5进制转换
接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1≤n≤pow(2,31)−1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
代码实现:
#include <iostream>
using namespace std;
int main()
{
int a;
while (cin >> hex >> a) {
cout << a << endl;
}
}
运行结果:

8、HJ6质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1≤n≤2×pow(10,9) +14
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
代码实现:
#include <iostream> #include <math.h> using namespace std; int main() { int n; cin >> n; for (int i = 2; pow(i, 2) <= n; i++) { if (n % i == 0) { cout << i << " "; n /= i; i--; } } cout << n; return 0; }
运行结果:

9、HJ8合并记录表
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
代码实现:
主要用到STL标准库中的map关联容器,它提供一对一的Hash。
1)第一个为关键字key,每个关键字只能在map中出现一次。
2)第二个称为该关键字的值。
map以模板(泛型)的方式实现,可以存储任意类型的数据,定义及使用方法如下代码所示:
#include <iostream> #include <map> //STL头文件没有扩展名.h using namespace std; int main() { int num,key,value; map<int, int> mp; cin >> num; while (num) { cin >> key >> value; //count()方法返回值是一个整数,1表示有这个元素,0表示没有这个元素,以此来判断键值元素是否存在 if (mp.count(key)) { mp[key] += value; } else { mp.insert(pair<int, int>(key, value)); //插入元素 } num--; } map<int, int>::iterator it; //迭代器 for (it = mp.begin(); it != mp.end(); it++) { cout << it->first << " " << it->second << endl; } return 0; }
运行结果:

10、HJ3明明的随机数
明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围:1≤n≤1000,输入的数字大小满足 1≤val≤500
输入描述:
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。
输出描述:
输出多行,表示输入数据处理后的结果
代码实现:
#include <iostream> #include <vector> #include <algorithm> //使用sort需要引用该头文件 using namespace std; int main() { int num; cin >> num; vector<int> vec(num); //num表示 for (int i = 0; i < num; i++) { cin >> vec[i]; } sort(vec.begin(), vec.end()); /*unique只移除相邻元素,如果要移除所有重复元素,则需要先将数据进行排序,使重复元素相邻 unique()会返回一个迭代器*/ vector<int>::iterator it= unique(vec.begin(), vec.end()); vec.erase(it,vec.end()); //排序后输出 int len = vec.size(); for (int i = 0; i < len; i++) { cout << vec[i] << endl; } return 0; }
运行结果如下:

11、HJ10字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围: 1≤n≤500
输入描述:
输入一行没有空格的字符串。
输出描述:
输出 输入字符串中范围在(0~127,包括0和127)字符的种数。
代码实现:
#include <iostream> #include <vector> #include <algorithm> //find()函数位于该头文件内 using namespace std; int charNum(string str) { int cnt = 0; int len = str.length(); vector<char> vec; for (int i = 0; i < len; i++) { if (find(vec.begin(), vec.end(), str[i]) == vec.end()) { vec.push_back(str[i]); } } cnt = vec.size(); return cnt; } int main() { string str; cin >> str; int num=charNum(str); cout << num << endl; return 0; }
运行结果:

12、HJ11 数字颠倒
描述
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
数据范围: 0≤n≤pow(2,30)−1
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
代码实现:
#include <iostream> #include <sstream> using namespace std; int main() { int num; cin >> num; stringstream ss; string res; while (num / 10 != 0) { ss << num % 10; num /= 10; } ss << num % 10; //向流中写入数据 ss >> res; //读出流中的数据 cout << res << endl; return 0; }
运行结果:

13、HJ12字符串反转
描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
输入描述:
输入一行,为一个只包含小写字母的字符串。
输出描述:
输出该字符串反转后的字符串。
代码实现:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str;
getline(cin, str);
//字符反转
reverse(str.begin(), str.end()); //位于头文件#include<algorithm>
cout << str << endl;
return 0;
}
运行结果:

14、HJ13句子逆序
描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
代码实现:
#include <iostream> #include <string> #include <sstream> #include <vector> #include <algorithm> using namespace std; int main() { string str; getline(cin, str); stringstream stream(str); string out; vector<string> vec; while (stream >> out) { vec.push_back(out); } reverse(vec.begin(),vec.end()); int len = vec.size(); for (int i = 0; i < len; i++) { cout << vec[i] << " "; } return 0; }
运行结果:

15、HJ14字符串排序
描述
给定 n 个字符串,请对 n 个字符串按照字典序排列。
数据范围: 1≤n≤1000 ,字符串长度满足 1≤len≤100
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
代码实现:
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int N; cin >> N; vector<string> vec; const int max = 1000; static string data[max]; for (int i = 0; i < N; i++) { cin >> data[i]; vec.push_back(data[i]); } sort(vec.begin(), vec.end()); int len = vec.size(); for (int i = 0; i < len; i++) { cout << vec[i] << endl; } return 0; }
运行结果:

16、HJ15 求int型正整数在内存中存储时1的个数
描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
代码实现:
#include <iostream> using namespace std; int main() { int n; cin >> n; int cnt = 0; while (n != 0) { if (n % 2 != 0) cnt++; n >>= 1; } cout << cnt << endl; return 0; }
运行结果:

17、HJ108求最小公倍数
描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1≤a,b≤100000
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
代码实现:
#include <iostream> #include <string> using namespace std; //计算最大公约数:greatest common divisor int gcd(int a, int b) { int c = 0; while (c = a % b) { a = b; b = c; } return b; } //计算最小公倍数:least common multiple int lcm(int a, int b) { int tmp = a * b / gcd(a, b); return tmp; } int main() { int a, b; cin >> a >> b; int min = lcm(a, b); cout << min << endl; return 0; }
运行结果:

18、HJ106 字符逆序
描述
将一个字符串str的内容颠倒过来,并输出。
数据范围:1≤len(str)≤10000
输入描述:
输入一个字符串,可以有空格
输出描述:
输出逆序的字符串
代码实现:
#include <iostream> #include <string> using namespace std; int main() { string str; getline(cin, str); int len = str.length(); for (int i = len-1; i >= 0; i--) { cout << str[i]; } return 0; }
运行结果:

19、HJ102字符统计
描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。
数据范围:字符串长度满足 1≤len(str)≤1000
输入描述:
一个只包含小写英文字母和数字的字符串。
输出描述:
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。
知识点:
vector初始化方式:
vector<int>vec0; //默认初始化,vec0为空
vector<int>vec1{1,2,3}; //直接赋值
vector<int>vec2(vec1); //用vec1初始化vec2
vector<int>vec3(vec1.begin(), vec1.end()); //用vec1初始化vec3
vector<int>vec4(10); //10个值为0的元素
vector<int>vec5(10,4); //10个值为4的元素
vector<vector<int>>vec6(10, vector<int>(4, 1)); //10*4的二维数组,值全为1
代码实现:
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; //define struct struct dat { int num; char ch; }; //定义排序规则 bool sort1(dat & d1, dat & d2) { if (d1.num == d2.num) { return d1.ch < d2.ch; } else { return d1.num > d2.num; } } int main() { string str; getline(cin, str); //初始化vector,256个值为0的元素,用来保存每个字符的数量 vector<int> char_num(256, 0); vector<dat> charN;//用来保存对应的某个字符以及数量 //遍历字符串中每个字符出现的次数 int len = str.length(); for (int i = 0; i < len; i++) { char_num[str[i]]++; } for (int i = 0; i < 256; i++) { dat tmp; tmp.ch = i; tmp.num = char_num[i]; charN.push_back(tmp); } //按照字符数量进行排序,数量相同字典序小的在前 sort(charN.begin(), charN.end(), sort1); int sz = charN.size(); for (int i = 0; i < sz; i++) { if (charN[i].num == 0) break; cout << charN[i].ch; } return 0; }
运行结果:

20、HJ100等差数列
描述
等差数列 2,5,8,11,14…
(从 2 开始的 3 为公差的等差数列)
输出求等差数列前n项和
数据范围: 1≤n≤1000
输入描述:
输入一个正整数n。
输出描述:
输出一个相加后的整数。
代码实现:
#include <iostream> using namespace std; int main() { int sum = 0; int a1 = 2; int n; cin >> n; while (n--) { sum += a1; a1 += 3; } cout << sum << endl; return 0; }
运行结果:

21、HJ99自守数
描述
自守数是指一个数的平方的尾数等于该数自身的自然数。例如:2525= 625,7676 = 5776,9376*9376 = 87909376。请求出n(包括n)以内的自守数的个数
数据范围: 1≤n≤10000
输入描述:
int型整数
输出描述:
n以内自守数的数量
代码实现:
#include <iostream> using namespace std; int main() { int base = 10; int tmp = 1; int n; cin >> n; for (int i = 1;i <= n; i++) { int sq = i*i; if (i == base) base *= 10; if (sq % base == i) tmp++; } cout << tmp << endl; return 0; }
运行结果:

22、HJ23 删除字符串中出现次数最少的字符
描述
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
数据范围:输入的字符串长度满足 1≤n≤20 ,保证输入的字符串中仅出现小写字母
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
代码实现:
#include <iostream> #include<algorithm> using namespace std; int main() { string s; const int num = 26; while (cin >> s) { int cnt[num] = { 0 }; //将每个字符出现的次数对应的放在cnt数组中 int len = s.size(); for (int i = 0; i <len ; i++) { int tmp = int(s[i] - 'a'); cnt[tmp]++; } //找到最小次数的字符并删除 int min = 100; for (int i = 0; i < num; i++) { if ((cnt[i] != 0) && (cnt[i] < min)) { min = cnt[i]; } } //删除最小字符 for (int i = 0; i < num; i++) { if (min == cnt[i]) { s.erase(remove(s.begin(), s.end(), 'a' + i), s.end()); } } cout << s << endl; } return 0; }
运行结果:

知识点:vector::remove()函数的使用
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1,1,2,3,4,5,6,7,8,9 };
remove(vec.begin(), vec.end(), 1);
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
return 0;
}
运行结果如下:在这里插入图片描述

remove()函数的功能就是将vector中指定的数据移动到vector末尾,注意,上述代码remove将两个1移动到末尾,但是在vector中并不显示出来,也就是说不能输出,但是内存中却存在这个数,需要使用erase才能彻底删除,使用方法如下:
vec.erase(remove(vec.begin(), vec.end(), 1), vec.end());
运行结果如下:
23、HJ31 单词倒排
描述
对字符串中的所有单词进行倒排。
说明:
(1)构成单词的字符只有26个大写或小写英文字母;
(2)非构成单词的字符均视为单词间隔符;
(3)要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
(4)每个单词最长20个字母;
数据范围:字符串长度满足 1≤n≤10000
输入描述:
输入一行,表示用来倒排的句子
输出描述:
输出句子的倒排结果
代码实现:
#include<iostream> #include<vector> #include<string> using namespace std; int main() { string str; while (getline(cin, str)) { vector<string>svec; svec.clear(); string temp = ""; for (int i = 0; i < str.size(); ++i) { if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z') temp += str[i]; else { if (temp.size() > 0) { svec.push_back(temp); temp = ""; } } } if (temp.size() > 0) svec.push_back(temp); // 逆序输出 int len = svec.size(); for (int i = len - 1; i >= 0; --i) cout << svec[i] << ' '; } return 0; }
运行结果如下:

24、HJ97 记负均正
描述
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。
数据范围: 1≤n ≤2000 ,输入的整数都满足 ∣val∣≤1000
输入描述:
首先输入一个正整数n,
然后输入n个整数。
输出描述:
输出负数的个数,和所有正整数的平均值。
代码实现:
#include<iostream> #include<iomanip> using namespace std; int main() { int N; cin >> N; int pos = 0, neg = 0, sum = 0; for (int i = 0; i < N; i++) { int tmp; cin >> tmp; if (tmp > 0) { pos++; sum += tmp; } else if (tmp < 0) { neg++; } } float mean; if (pos == 0) { mean = 0.0; } else { mean = sum * 1.0 / pos; } cout << neg<<" "<< fixed << setprecision(1) << mean << endl; return 0; }
运行结果:

25、HJ40 统计字符
描述
输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。
数据范围:输入的字符串长度满足 1≤n≤1000
输入描述:
输入一行字符串,可以有空格
输出描述:
统计其中英文字符,空格字符,数字字符,其他字符的个数
代码实现:
#include<iostream> #include<string> using namespace std; int main() { string str; getline(cin, str); int cnt_word = 0, cnt_blank = 0, cnt_num = 0, cnt_other = 0; int sz = str.size(); for (int i = 0; i < sz; i++) { if (str[i] >= '0' && str[i] <= '9') { cnt_num++; } else if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) { cnt_word++; } else if (str[i] == ' ') { cnt_blank++; } else { cnt_other++; } } cout << cnt_word << endl; cout << cnt_blank << endl; cout << cnt_num << endl; cout << cnt_other << endl; return 0; }
运行结果:

26、HJ51 输出单向链表中倒数第k个结点
描述
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
正常返回倒数第k个结点指针,异常返回空指针.
要求:
(1)正序构建链表;
(2)构建后要忘记链表长度。
数据范围:链表长度满足1≤n≤1000 ,k≤n ,链表中数据满足 0≤val≤10000
本题有多组样例输入。
输入描述:
输入说明
1 输入链表结点个数
2 输入链表的值
3 输入k的值
输出描述:
输出一个整数
代码实现:
#include <iostream> using namespace std; //链表节点 struct ListNode { int val; ListNode* next; //初始化 ListNode(int x):val(x), next(NULL) {} }; //找到链表倒数第k个节点 ListNode* FindKthToTail(ListNode* pHead, int k) { int n = 0; ListNode* fast = pHead; ListNode* slow = pHead; //快指针 for (int i = 0; i < k; i++) { if (fast != NULL) fast = fast->next; else //达不到k,说明链表长度过短,返回空链表 return slow = NULL; } //快慢指针同步,快指针先到底,慢指针指向倒数第k个元素 while (fast != NULL) { fast = fast->next; slow = slow->next; } return slow; } int main() { int n, val; //输入n个节点 while (cin >> n) { cin >> val; //输入链表第一个节点 ListNode* head = new ListNode(val); ListNode* p = head; //输入链表后续节点 for (int i = 1; i < n; i++) { cin >> val; ListNode* q = new ListNode(val); //连接 p->next = q; p = p->next; } //找到第k个位置 int k; cin >> k; //边界条件如果等于0直接返回0 if (k == 0) cout << 0 << endl; else { //找到第k个节点 p = FindKthToTail(head, k); //只有返回不NULL才输出 if (p != NULL) cout << p->val << endl; } } return 0; }
运行结果:

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。