鱼C论坛

 找回密码
 立即注册
查看: 973|回复: 6

[已解决]求链表表长问题

[复制链接]
发表于 2022-11-4 17:36:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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?
最佳答案
2022-11-4 18:44:05
1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响


       只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写
  1.         a = i ++ ;
  2.         a = ++ i ;
  3.         printf("%d\n" , i ++) ;
  4.         printf("%d\n" , ++ i) ;
复制代码

        只有类似这种时候的 i ++ 和 ++ i 才不可以乱写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-4 17:38:45 | 显示全部楼层
先 i++,因为指针现在指向的也是一个节点,先统计现在的这个节点,然后再将指针指向下一个节点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 17:42:07 | 显示全部楼层
tommyyu 发表于 2022-11-4 17:38
先 i++,因为指针现在指向的也是一个节点,先统计现在的这个节点,然后再将指针指向下一个节点

可以改成++i么,是否对循环有什么影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 17:42:43 | 显示全部楼层
1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响

++i 和 i++ 基本上是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-4 18:44:05 | 显示全部楼层    本楼为最佳答案   
1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响


       只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写
  1.         a = i ++ ;
  2.         a = ++ i ;
  3.         printf("%d\n" , i ++) ;
  4.         printf("%d\n" , ++ i) ;
复制代码

        只有类似这种时候的 i ++ 和 ++ i 才不可以乱写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 21:44:50 | 显示全部楼层
jackz007 发表于 2022-11-4 18:44
只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写

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

这样调用的时候,运算方法是怎样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 22:04:24 | 显示全部楼层
1094570635 发表于 2022-11-4 21:44
这样调用的时候,运算方法是怎样的


      加号在后面的(i ++)先引用再增 1,加号在前面的(++ i)先增 1,再引用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表