第2章 线性表的链式表示
综合应用题 第21题
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/476bbe04e3bac4e15955737464b30701.png)
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct node {
ElemType data;
struct node *link;
}LNode, *LinkList;
LinkList LinkListInit() {
LNode *L;
L = (LNode *)malloc(sizeof(LNode));
if (L == NULL) {
cout<<"申请内存空间失败\n";
exit(0);
}
L->link = NULL;
return L;
}
LinkList LinkListCreatT(ElemType *a, int n) {
LNode *L;
L = LinkListInit();
LNode *r;
r = L;
LNode *p;
for (int i = 0; i < n; i++){
p = (LNode *)malloc(sizeof(LNode));
if (p == NULL) {
cout<<"申请内存空间失败\n";
exit(0);
}
p->data = a[i];
p->link = r->link;
r->link = p;
r = p;
}
return L;
}
int findK(LinkList &list,int k)
{
LNode *p=list->link,*q=list->link;
int cnt=0;
while(p)
{
if(cnt<k)
cnt++;
else
q=q->link;
p=p->link;
}
if(cnt<k)
return 0;
else{
cout<<q->data;
return 1;
}
}
int main() {
LinkList list, start;
int array1[5] = { 1, 2, 3, 5, 7 };
cout<<"输出单链表的数据:";
list=LinkListCreatT(array1,5);
for (start = list->link; start != NULL; start = start->link) {
cout<<start->data<<" ";
}
cout<<endl;
int k;
cout<<"输入k:";
cin>>k;
findK(list,k);
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d690d6e3cdbfd1a57385f4eadaf5092e.png)