計算連結串列長度
阿新 • • 發佈:2019-01-29
#include<stdio.h> #include<stdlib.h> typedef struct student { int num; struct student *next; }Lstudent,*LPstudent; void InitLink(LPstudent *phead) { Lstudent *ptr,*r; *phead=NULL; //----------------------------------------------- ptr=malloc(sizeof(Lstudent)); *phead=ptr; ptr->next=NULL; //------------------------------------------------ int n; printf("please input number of student:\n"); scanf("%d",&n); while(n>0) { ptr=malloc(sizeof(Lstudent)); ptr->num=n; ptr->next=NULL; if((*phead)->next==NULL)/////////////////////////////// (*phead)->next=ptr;////////////////////////////////// else r->next=ptr; r=ptr; printf("please input number of student:\n"); scanf("%d",&n); } } void printf_link(Lstudent *ptri) { ptri=ptri->next;///////////////////////////////////////////////// while(ptri!=NULL) { printf("%d ",ptri->num); ptri=ptri->next; } } unsigned int ListLength(Lstudent *ptr) { unsigned int l=0; ptr=ptr->next;//帶頭結點 while(ptr!=NULL) { l++; ptr=ptr->next; } return l; } int main() { LPstudent head; InitLink(&head); printf_link(head); unsigned int a=ListLength(head); printf("%u\n",a); }