鱼C论坛

 找回密码
 立即注册
查看: 2728|回复: 2

顺序链表

[复制链接]
发表于 2019-9-20 06:49:50 | 显示全部楼层 |阅读模式

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

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

x
  1. #ifndef HEADER_H
  2. #define HEADER_H
  3. #define OK 1
  4. #define ERROR 0
  5. #define TRUE 1
  6. #define FALSE 0
  7. #define MAXSIZE 20
  8. #include<stdio.h>
  9. typedef int Status;
  10. typedef int ElemType;
  11. typedef struct{
  12.    ElemType data[MAXSIZE];
  13.    int length;
  14. }SqList;

  15. Status InitSqList(SqList *L)
  16. {
  17.      L->length=0;
  18.      return OK;
  19. }
  20. Status CreateList(SqList *L)
  21. {
  22.     int i=0,j=0;
  23.     while(i<MAXSIZE)
  24.     {
  25.         if(L->length==MAXSIZE)
  26.         {
  27.             printf("顺序表已满!");
  28.             return FALSE;
  29.         }
  30.         L->data[++i]=i;
  31.         //i++是先给第一个赋值,再自增。而++i是先自增再赋值
  32.         L->length++;
  33.         printf("%d\n",L->data[i]);
  34.     }
  35.     return TRUE;
  36. }
  37. Status GetElem(SqList *L,int index)
  38. {
  39.     ElemType *e;
  40.     if(index  <=L->length || index > L->length ||L->length == 0)
  41.     {
  42.         return ERROR;
  43.     }
  44.     *e=L->data[index-1];
  45.     return OK;
  46. }
  47. #endif
复制代码

上面是定义的头文件
问题再我用红笔划出来那里。
当我将L->data[i++]=i时;
L->data[i]遍历后输出的结果很乱。不是按照递增
当我改为L->data[++i]=i后;
发现结果满足预期。按道理来说,两者虽有不同,也只是体现再程序的数值上。怎么会有这样的效果?

i++

i++

++i

++i

question

question
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-20 14:36:18 | 显示全部楼层
本帖最后由 superbe 于 2019-9-20 14:39 编辑

L->data[i++]=i;
L->length++;
printf("%d\n",L->data[ i ]);

在i++的情况下,程序先给data[ i ] 赋值,然后 i 增加1,i 的值变成了 i+1,然后下面的 printf 实际上是输出data[ i+1 ]的值 ,而这个元素还没有赋值(是刚赋值的这个元素的下一个元素)。所以printf出来的是未初始化的未知的数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-23 18:18:59 | 显示全部楼层
superbe 发表于 2019-9-20 14:36
L->data=i;
L->length++;
printf("%d\n",L->data[ i ]);

收到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 14:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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