题目:输入一个单向链表,输出该单向链表中倒数第K个结点,链表的倒数第0个结点为链表的尾指针
个人代码:
第一步:定义单向链表的结点,和链表LinkList结构体
#include<iostream>
using namespace std;
typedef struct Node
{
int data;
Node *next;
}Node;
typedef struct Node *LinkList;
第二步:创建单向链表
void CreateList(LinkList *L) //尾插入法
{
int i=1;
(*L)=new Node();
(*L)->data=i;
(*L)->next=NULL;
Node *f=(*L);
while((++i)!=10)
{
//++i;
Node *p=new Node();
(*p).data=i;
(*p).next=(*f).next;
(*f).next=p;
f=p;
}
}生成1,2,3.。。。。,8,9的单向链表
第三步:查找倒数第几个结点
LinkList Find(LinkList *L,int k)
{
LinkList p=*L,q=*L;
while(k>0)
{
p=p->next;
--k;
}
while(p->next)
{
p=p->next;
q=q->next;
}
return q;
}
第四步:打印单向链表结点,便于观察结果
void PrintList(LinkList *L)
{
Node *p=(*L);
while(p)
{
cout<<(*p).data<<endl;
p=p->next;
}
}
第五步:main函数调用子函数即可
int _tmain(int argc, _TCHAR* argv[])
{
int num=0;
LinkList *list=new LinkList();
CreateList(list);
PrintList(list);
LinkList l=Find(list,3);
cout<<(*l).data<<endl;
return 0;
}
1万+

被折叠的 条评论
为什么被折叠?



