本题要求实现一个函数,求链式表的表长。
函数接口定义:
int Length( List L );
其中List
结构定义如下:
typedef struct LNode *PtrToLNode;
struct LNode {
ElementType Data;
PtrToLNode Next;
};
typedef PtrToLNode List;
L
是给定单链表,函数Length
要返回链式表的长度。
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; List Read(); /* 细节在此不表 */ int Length( List L ); int main() { List L = Read(); printf("%d\n", Length(L)); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
1 3 4 5 2 -1
输出样例:
5
代码展示:
1 List Read() 2 { 3 PtrToLNode head = NULL; 4 PtrToLNode list = NULL; 5 int data; 6 scanf("%d",&data); 7 if(data!=-1) 8 { 9 head = (PtrToLNode)malloc(sizeof(struct LNode)); 10 head->Data = data; 11 head->Next = NULL; 12 list=head; 13 } 14 scanf("%d",&data); 15 while(data!=-1) 16 { 17 PtrToLNode node = NULL; 18 node = (PtrToLNode)malloc(sizeof(struct LNode)); 19 node->Data = data; 20 node->Next = NULL; 21 list->Next = node; 22 list = node; 23 scanf("%d",&data); 24 } 25 return head; 26 } 27 int Length( List L ) 28 { 29 int len= 0; 30 while(L) 31 { 32 len++; 33 L = L->Next; 34 } 35 return len; 36 }