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;
}

 

 

posted @ 2021-09-23 00:01  磐正  阅读(17)  评论(0)    收藏  举报