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