请各位大虾指教:为什么L->r[i].key访问不到key?
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 20
typedef int ElemType;
typedef int InfoType;
#define EQ(a,b) ((a) == (b))
#define LT(a,b) ((a) < (b))
#define LQ(a,b) ((a) <= (b))
typedef struct
{
ElemType key;
InfoType otherinfo;
}ReadType;
typedef struct
{
ReadType r[MAXSIZE+1];
int length;
}SortList;
void InitSortList(SortList *L);
void PrintSortList(SortList L);
int InsertSort(SortList *L);
void InitSortList(SortList *L)
{
int i = 0;
srand((unsigned)time(NULL));
for(i = 1;i <= 20; i++);
{
L->r[i].key = rand()%100;
printf("~~~~~~~~~~%d\n", L->r[i].key);
}
L->length = 20;
return;
}
void PrintSortList(SortList L)
{
int i = 0;
for(i = 1;i <= 20; i++);
{
printf("-----%d\n",L.r[i].key);
}
return;
}
int InsertSort(SortList *L)
{
int i = 0;
int j = 0;
if(L == NULL)
{
perror("L is NULL!\n");
return -1;
}
for(i = 2; i<=L->length; i++)
{
if(LT(L->r[i].key, L->r[i-1].key))
{
L->r[0] = L->r[i];
L->r[i] = L->r[i-1];
for(j=i-2; LT(L->r[0].key, L->r[j].key); j--)
{
L->r[j+1] = L->r[j];
}
L->r[j+1] = L->r[0];
}
}
return 0;
}
int main(int argc, char *argv[])
{
//排序操作
SortList SL;
InitSortList(&SL);
PrintSortList(SL);
InsertSort(&SL);
PrintSortList(SL);
return 0;
}
[解决办法]
for(i = 1;i <= 20; i++); { L->r[i].key = rand()%100; printf("~~~~~~~~~~%d\n", L->r[i].key); }
[解决办法]
void InitSortList(SortList *L)
{
int i = 0;
srand((unsigned)time(NULL));
for(i = 1;i <= 20; i++);这儿
{
L->r[i].key = rand()%100;
printf("~~~~~~~~~~%d\n", L->r[i].key);
}
L->length = 20;
return;
}
[解决办法]
void PrintSortList(SortList L){ int i = 0; for(i = 1;i <= 20; i++); { printf("-----%d\n",L.r[i].key); } return;}
[解决办法]
学会单步调试,这种多了个分号的问题立马就能发现
[解决办法]
你完全可以在for循环语句中加个断点,调试一下,一看只进去一次,就有问题。。。
[解决办法]