天天看點

4-3 求鍊式表的表長

本題要求實作一個函數,求鍊式表的表長。

函數接口定義:

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 ;
}
/* 你的代碼将被嵌在這裡 */
           

輸入樣例:

1 3 4 5 2 -1

輸出樣例:

5

#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 ;
}
List Read()  
{  
  int len = ;
  int num = ;
  PtrToLNode list = NULL;
  PtrToLNode last = NULL;

  scanf( "%d",&len );
  if(  len ==   )
    return NULL;

  scanf( "%d",&num );
  list = ( PtrToLNode )malloc( sizeof( PtrToLNode ) );
  list->Data = num;
  list->Next = NULL;
  last = list;
  len--;
  while(  len ){
    scanf( "%d",&num );
    PtrToLNode node = ( PtrToLNode )malloc( sizeof( PtrToLNode ) );
    node->Data = num;
    node->Next = NULL;
    last->Next = node;
    last = node;
    len--;
  }
  return list;
}
int Length( List L ){
    if(L==NULL) return ;
    else {
        int len=;
        while(L->Next!=NULL){
        len++;
        L=L->Next;
        }
        return len;
    }
}
           

題目連結:

https://pta.patest.cn/pta/test/15/exam/3/question/726