1-1 求链式表的表长
分数 3
作者 陈越
单位 浙江大学
本题要求实现一个函数,求链式表的表长。
函数接口定义:
其中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
| int Length( List L ) { int length = 0; while (L != NULL) { L = L->Next; length++; } return length; }
|
解析
此题没有头结点
1 2 3 4 5
| typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; };
|
相当于
1 2 3 4
| struct LNode { ElementType Data; PtrToLNode Next; } *PtrToLNode, *List;
|
PtrToLNode:指向该结构体的指针类型别名
List:同样是指向该结构体的指针类型别名(与PtrToLNode完全相同)