数据结构——查找链表倒数第K个位置结点(C语言)

    科技2022-08-22  116

    查找链表倒数第K个位置结点 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 10010 #define ElemType int typedef struct LNode{ ElemType data; LNode *next; }LNode,*LinkList; //创建 LinkList initLinkList(int num){ LNode* head=(LNode *)malloc(sizeof(LNode)); LinkList p=head; p->next=NULL; int elem; while(num--){ printf("输入:"); scanf("%d",&elem); LNode* L=(LNode *)malloc(sizeof(LNode)); L->data=elem; L->next=NULL; p->next=L; p=p->next; } return head; } //查找链表倒数第K个结点 LinkList FindRevElem(LinkList l,int length,int loc){ LinkList p= l->next; int count1=0; while(p&&(count1++ < (length-loc))){ p=p->next; } return p; } //获取表长 int getListLength(LinkList l){ int length=0; LinkList p=l->next; while(p){ length++; p=p->next; } return length; } //打印 void display(LinkList p){ LinkList pp=p->next; while(pp){ int data=pp->data; printf("%d ",data); pp=pp->next; } } int main(){ printf("输入元素个数:"); int num; scanf("%d",&num); printf("初始化链表\n"); LinkList LL1; LL1=initLinkList(num); printf("\n打印链表\n"); display(LL1); printf("表长\n"); int length; length=getListLength(LL1); printf("%d\n",length); printf("查找倒数第K个元素的结点\n"); int loc; printf("输入K:"); scanf("%d",&loc); LinkList findP; findP=FindRevElem(LL1,length,loc); printf("find=%d\n",findP->data); return 0; }

    Processed: 0.018, SQL: 9