13、輸入一個單向連結串列,輸出該連結串列中倒數第k個結點
阿新 • • 發佈:2019-01-08
#include <stdio.h> #include <stdlib.h> typedef struct node { int value; struct node *next; }LinkList; void CreateList(LinkList *L); //建立一個連結串列 int GetLength(LinkList *L); //獲取連結串列長度 int Output(LinkList *L,int len,int k); //輸出長度為len的連結串列的倒數第k個結點的值 int main() { int n,k; LinkList *L=(LinkList*)malloc(sizeof(LinkList)); L->next=NULL; CreateList(L); n=GetLength(L); while (printf("Please input K: "),scanf("%d",&k)!=EOF) //輸入倒數第幾個結點k { if (k>n-1) { printf("Sorry,no such Node!\n\n"); continue; } printf("%d\n\n",Output(L,n,k)); } return 0; } void CreateList(LinkList *L) { int data; LinkList *s=NULL,*tail=L; while (printf("Input value: "),scanf("%d",&data)!=EOF) { s=(LinkList*)malloc(sizeof(LinkList)); s->value=data; s->next=NULL; tail->next=s; tail=s; } } int GetLength(LinkList *L) { LinkList *s=L->next; int count=0; while (s!=NULL) { count++; s=s->next; } return count; } int Output(LinkList*L,int len,int k) { LinkList *s=L; int i; for (i=0;i<len-k;i++) { s=s->next; } return s->value; }