6-3 求链式表的表长 (10 分)
本题要求实现一个函数,求链式表的表长。
函数接口定义:
其中List结构定义如下:
| 12
 3
 4
 5
 6
 
 | typedef struct LNode *PtrToLNode;struct LNode {
 ElementType Data;
 PtrToLNode Next;
 };
 typedef PtrToLNode List;
 
 | 
L是给定单链表,函数Length要返回链式表的长度。
裁判测试程序样例:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | #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;
 }
 
 
 
 | 
输入样例:
输出样例:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 
 | #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;
 }
 List Read()
 {
 int num;
 scanf("%d",&num);
 if(num==-1)
 {
 return NULL;
 }
 PtrToLNode head=NULL,list=NULL;
 head=(PtrToLNode)malloc(sizeof(struct LNode));
 head->Data=num;
 head->Next=NULL;
 list=head;
 scanf("%d",&num);
 while(num!=-1)
 {
 PtrToLNode node=(PtrToLNode)malloc(sizeof(struct LNode));
 
 node->Data=num;
 node->Next=NULL;
 list->Next=node;
 list=node;
 scanf("%d",&num);
 }
 return head;
 
 }
 
 int Length( List L )
 {
 int n=0;
 if(L==NULL)return 0;
 while(L!=NULL)
 {
 L=L->Next;
 n++;
 }
 return n;
 }
 
 |