1094570635 发表于 2022-11-4 17:36:10

求链表表长问题

#include<iostream>
using namespace std;
#include"time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20

typedef int Status;
typedef int ElemType;

Status visit(ElemType c)
{
        cout << c << " ";
        return OK;
}

typedef struct Node
{
        ElemType data;
        struct Node* next;

}Node;

typedef struct Node* LinkList;

Status InitList(LinkList *L)
{
        *L = new Node;
        if (!(*L))
        {
                return ERROR;
        }
        (*L)->next = NULL;
        return OK;

}

Status ListEmpty(LinkList L)
{
        if (L->next)
        {
                return FALSE;
        }
        else
        {
                return TRUE;
        }

}

Status ClearList(LinkList *L)
{
        LinkList p, q;
        p = (*L)->next;
        while (p)
        {
                q = p->next;
                delete (p);
                p = q;

        }
        (*L)->next = NULL;
}

int ListLength(LinkList L)
{
        int i = 0;
        LinkList p = L->next;
        while (p)
        {
                i++;
                p = p->next;

        }
        return i;
}
对于函数int ListLength(LinkList L)
{
        int i = 0;
        LinkList p = L->next;
        while (p)
        {
                i++;
                p = p->next;

        }
        return i;
}
一直纠结i++,是否是先执行while循环判断以后,让p=p->next,再让i+1?

tommyyu 发表于 2022-11-4 17:38:45

先 i++,因为指针现在指向的也是一个节点,先统计现在的这个节点,然后再将指针指向下一个节点

1094570635 发表于 2022-11-4 17:42:07

tommyyu 发表于 2022-11-4 17:38
先 i++,因为指针现在指向的也是一个节点,先统计现在的这个节点,然后再将指针指向下一个节点

可以改成++i么,是否对循环有什么影响

tommyyu 发表于 2022-11-4 17:42:43

1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响

++i 和 i++ 基本上是一样的

jackz007 发表于 2022-11-4 18:44:05

1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响

       只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写
      a = i ++ ;
      a = ++ i ;
      printf("%d\n" , i ++) ;
      printf("%d\n" , ++ i) ;
      只有类似这种时候的 i ++ 和 ++ i 才不可以乱写。

1094570635 发表于 2022-11-4 21:44:50

jackz007 发表于 2022-11-4 18:44
只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写

      只有类似这种时候的 i ++...

这样调用的时候,运算方法是怎样的

jackz007 发表于 2022-11-4 22:04:24

1094570635 发表于 2022-11-4 21:44
这样调用的时候,运算方法是怎样的

      加号在后面的(i ++)先引用再增 1,加号在前面的(++ i)先增 1,再引用。
页: [1]
查看完整版本: 求链表表长问题