链表,结构体,指针,CG作业. 倒数第k个元素,已知带头结点的非空单链表中存放着若干整数,请找出该链表中倒数第k个元素

CG题总是喜欢让我们填一个空==

先写着,等我熟练了再来整理

 1 #include  <iostream>
 2 using  namespace  std;
 3 struct  Node  {
 4         int  data;
 5         Node  *next;
 6 };
 7 typedef  Node  *LinkList;
 8 void  createList(LinkList  &L,int  n)  {
 9         Node  *p,*r;
10         L=new  Node;
11         L->next=NULL;
12         r=L;
13         for(int  i=1;  i<=n;  i++)  {
14                 p=new  Node;
15                 cin>>p->data;
16                 r->next=p;
17                 r=p;
18         }
19         r->next=NULL;
20 }
21 void  printList(LinkList  L)  {
22         Node  *p;
23         p=L->next;
24         while(p)  {
25                 cout<<p->data<<"  ";
26                 p=p->next;
27         }
28         cout<<endl;
29 }
//CG里就只让我写了这一小段
30 Node * getElem(LinkList &L,int k){ 31 //求表长 32 Node *p; 33 p=L->next; 34 int M=0; 35 while(p!=NULL){ 36 M++; 37 p=p->next; 38 } 39 if(k>M)return NULL; 40 else{int i=1; 41 p=L->next; 42 while(p!=NULL&&i<=(M-k)){ 43 p=p->next; 44 i++;//cout<<"*"; 45 } 46 47 return p; 48 } 49 } 50 //到这是一个分界线========================================== 51 int main() { 52 LinkList L; 53 int m,k; 54 cin>>m;//单链表中元素个数 55 createList(L,m);//尾插入法创建带头节点的单链表 56 cin>>k; 57 Node *p=getElem(L,k);//找单链表中倒数第k个元素 58 if(p) 59 cout<<p->data; 60 else 61 cout<<"no"; 62 return 0; 63 }

猜你喜欢

转载自www.cnblogs.com/ahijing/p/12544080.html