6-3 求链式表的表长 (10 分)
本题要求实现一个函数,求链式表的表长。
函数接口定义:
其中List
结构定义如下:
1 2 3 4 5 6
| typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List;
|
L
是给定单链表,函数Length
要返回链式表的长度。
裁判测试程序样例:
1 2 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; }
|
输入样例:
输出样例:
1 2 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; }
|