#include<stdio.h>
#include<stdlib.h>
typedef struct Info
{
int data;
struct Info *next;
}Node,*pNode;
int main()
{
void create(pNode);
int find(pNode,int);
void print(pNode);
pNode link;
link=(pNode)malloc(sizeof(Node));
printf("Enter numbers(input 0 to end).\n");
create(link);
print(link);
int k;
printf("Please enter the position: ");
scanf("%d",&k);
printf("The last but %d number is :%d",k-1,find(link,k));
return 0;
}
void create(pNode head)
{
int n=0;
pNode p,q;
p=q=(pNode)malloc(sizeof(Node));
scanf("%d",&p->data);
p->next=NULL;
while(p->data!=0)
{
++n;
if(n==1)
head->next=p;
else
q->next=p;
q=p;
p=(pNode)malloc(sizeof(Node));
scanf("%d",&p->data);
p->next=NULL;
}
}
int find(pNode head,int k)
{
int count=0;
if(head==NULL)/*如果链表为空,则返回*/
return 0;
pNode p=head->next;
while(p!=NULL)/*遍历一遍链表,统计元素个数*/
{
++count;
p=p->next;
}
printf("the count of numbers is:% d\n",count);
if(k>=count)/*如果输入数字比元素个数大,则返回*/
return 0;
k=count-k+1;/*计算倒数第k个元素在链表中是正数第几个*/
printf("the position of element is:%d\n",k);
p=head;
while(k--)
p=p->next;
return p->data;
}
void print(pNode head)
{
pNode p=head->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
求一个链表中倒数第K个元素(2009年计算机硕士研究生全国入学考试统考大题第1题)
最新推荐文章于 2020-11-03 10:27:10 发布