2009 42
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node* next;
}Node, *List;
//遍历链表函数
void outputValue(List L)
{
Node* node=L;
while(node->next!=NULL)
{
node=node->next;
printf("%d ",node->data);
}
printf("\nThe End!\n");
}
//统计结点个数
//函数,获取链表倒数第k个元素
void k_value(List L,int k)
{
//1.Node *p1=L,*p2=L;
//2.List p1=L,p2=L;
//3.Node *p1,*p2;
// p1=p2=L;
List p1,p2;
p1=p2=L;
//先移动k个节点
//判断可行性
if(k>5||k<0)
printf("Invalid k\n");
else
{
for(int i=0;i<k;i++)
{
p2=p2->next;
}
while(p2!=NULL)
{
p1=p1->next;
p2=p2->next;
}
}
printf("倒数第%d个元素值为:%d\n",k,p1->data);
}
int main()
{
//头插法初始化链表
List L=(List)malloc(sizeof(Node));
L->next=NULL;
Node* node;
int x;
printf("初始化链表:\n");
for(int i=0;i<5;i++)
{
scanf("%d",&x);
node=(Node*)malloc(sizeof(Node));
node->data=x;
node->next=L->next;
L->next=node;
}
printf("初始化链表为:\n");
outputValue(L);
k_value(L,2);
return 0;
}


浙公网安备 33010602011771号