求链表表长问题
#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? 先 i++,因为指针现在指向的也是一个节点,先统计现在的这个节点,然后再将指针指向下一个节点 tommyyu 发表于 2022-11-4 17:38
先 i++,因为指针现在指向的也是一个节点,先统计现在的这个节点,然后再将指针指向下一个节点
可以改成++i么,是否对循环有什么影响 1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响
++i 和 i++ 基本上是一样的 1094570635 发表于 2022-11-4 17:42
可以改成++i么,是否对循环有什么影响
只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写
a = i ++ ;
a = ++ i ;
printf("%d\n" , i ++) ;
printf("%d\n" , ++ i) ;
只有类似这种时候的 i ++ 和 ++ i 才不可以乱写。 jackz007 发表于 2022-11-4 18:44
只要没有值引用,++ i 与 i ++ 是一个意思,可以随意乱写
只有类似这种时候的 i ++...
这样调用的时候,运算方法是怎样的 1094570635 发表于 2022-11-4 21:44
这样调用的时候,运算方法是怎样的
加号在后面的(i ++)先引用再增 1,加号在前面的(++ i)先增 1,再引用。
页:
[1]