user-0 提问: 顺序表总显示为空

回复:
user: user-1
content: 有几处错误： 1. printout  < if(Empty(L)==0){ --- > if(Empty(L)){  < for(i=0;i<=L->length;i++) --- > for(i=0;i<L->length;i++)  2. main <     for(i=0;i++;i<n) <     scanf("%d",&a[i]); --- <     for(i=0; i<n; i++) <     scanf("%d",&a[i]);  另外建议注意格式  #include<stdio.h> #include<stdlib.h> #define maxsize 100  #define debug(fmt, ...) \     printf("[DBUG][%4.4s:%04d] " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__)  typedef int ElemType; typedef int Status; typedef struct {     ElemType data[maxsize];     int length; } SqList;  void CreateList(SqList * L, ElemType a[], int n) {               //dingyi      if (n > maxsize || n < 1) {         printf("输入不合法\n");         return;     }     for (int i = 0; i < n; i++)         L->data[i] = a[i];     L->length = n;     debug("L->length=%d", L->length); }  int Empty(SqList * L) {     if (L->length == 0)         return 1;     else         return 0; }  void printout(SqList * L) {     int i;     debug("L->length=%d", L->length);     if (Empty(L)) {         printf("空表");         return;     }     for (i = 0; i < L->length; i++)         printf("%d ", L->data[i]); }  int main() {     int i, n;     ElemType a[maxsize];     SqList *L, c;     L = &c;     L = (SqList *) malloc(sizeof(SqList));     printf("链表长度和各数据:\n");     scanf("%d", &n);     debug("n=%d", n);     for (i = 0; i < n; i++) {         scanf("%d", &a[i]);         debug("a[%d]=%d", i, a[i]);     }     CreateList(L, a, n);      printout(L); }

user: user-2
content: 引用 2 楼 xqq&ngc2237 的回复:[quote=引用 1 楼 coo135 的回复:] 你的Empty(SqList *L)，空表返回1，非空返回0。  而你在printout中， if(Empty(L)==0)  则输出空表~，把0改成1吧。  ！改完可以运行了 不过还是不能正确的显示…… [/quote]   main()中的   L=(SqList*)malloc(maxsize);  多余，干啥都不知道，删掉。 for(i=0;i++;i<n)，i++和i<n弄反了吧，改过来。  printout()中的 for(i=0;i<=L->length;i++)，把i<=L->length 改成 i<L->length。 好了，成功。

user: user-1
content: 引用 6 楼 自信男孩 的回复:[quote=引用 4 楼 mymtom 的回复:] 有几处错误： 1. printout  < if(Empty(L)==0){ --- > if(Empty(L)){  < for(i=0;i<=L->length;i++) --- > for(i=0;i<L->length;i++)  2. main <     for(i=0;i++;i<n) <     scanf("%d",&a[i]); --- <     for(i=0; i<n; i++) <     scanf("%d",&a[i]);  另外建议注意格式  #include<stdio.h> #include<stdlib.h> #define maxsize 100  #define debug(fmt, ...) \     printf("[DBUG][%4.4s:%04d] " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__)  typedef int ElemType; typedef int Status; typedef struct {     ElemType data[maxsize];     int length; } SqList;  void CreateList(SqList * L, ElemType a[], int n) {               //dingyi      if (n > maxsize || n < 1) {         printf("输入不合法\n");         return;     }     for (int i = 0; i < n; i++)         L->data[i] = a[i];     L->length = n;     debug("L->length=%d", L->length); }  int Empty(SqList * L) {     if (L->length == 0)         return 1;     else         return 0; }  void printout(SqList * L) {     int i;     debug("L->length=%d", L->length);     if (Empty(L)) {         printf("空表");         return;     }     for (i = 0; i < L->length; i++)         printf("%d ", L->data[i]); }  int main() {     int i, n;     ElemType a[maxsize];     SqList *L, c;     L = &c;     L = (SqList *) malloc(sizeof(SqList));     printf("链表长度和各数据:\n");     scanf("%d", &n);     debug("n=%d", n);     for (i = 0; i < n; i++) {         scanf("%d", &a[i]);         debug("a[%d]=%d", i, a[i]);     }     CreateList(L, a, n);      printout(L); }   SqList *L, c;     L = &c;     L = (SqList *) malloc(sizeof(SqList));  没感觉这儿怪怪的吗？[/quote] 是有问题，下面一行不需要的

user: user-3
content: 引用 4 楼 mymtom 的回复:有几处错误： 1. printout  < if(Empty(L)==0){ --- > if(Empty(L)){  < for(i=0;i<=L->length;i++) --- > for(i=0;i<L->length;i++)  2. main <     for(i=0;i++;i<n) <     scanf("%d",&a[i]); --- <     for(i=0; i<n; i++) <     scanf("%d",&a[i]);  另外建议注意格式  #include<stdio.h> #include<stdlib.h> #define maxsize 100  #define debug(fmt, ...) \     printf("[DBUG][%4.4s:%04d] " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__)  typedef int ElemType; typedef int Status; typedef struct {     ElemType data[maxsize];     int length; } SqList;  void CreateList(SqList * L, ElemType a[], int n) {               //dingyi      if (n > maxsize || n < 1) {         printf("输入不合法\n");         return;     }     for (int i = 0; i < n; i++)         L->data[i] = a[i];     L->length = n;     debug("L->length=%d", L->length); }  int Empty(SqList * L) {     if (L->length == 0)         return 1;     else         return 0; }  void printout(SqList * L) {     int i;     debug("L->length=%d", L->length);     if (Empty(L)) {         printf("空表");         return;     }     for (i = 0; i < L->length; i++)         printf("%d ", L->data[i]); }  int main() {     int i, n;     ElemType a[maxsize];     SqList *L, c;     L = &c;     L = (SqList *) malloc(sizeof(SqList));     printf("链表长度和各数据:\n");     scanf("%d", &n);     debug("n=%d", n);     for (i = 0; i < n; i++) {         scanf("%d", &a[i]);         debug("a[%d]=%d", i, a[i]);     }     CreateList(L, a, n);      printout(L); }   SqList *L, c;     L = &c;     L = (SqList *) malloc(sizeof(SqList));  没感觉这儿怪怪的吗？

user: user-3
content: #include<stdio.h> #include<stdlib.h>  #define maxsize 100  typedef int ElemType; typedef int Status;  typedef struct{ 	ElemType data[maxsize]; 	int length; } SqList;  void CreateList(SqList *L,ElemType a[],int n)  {   //dingyi  	if(n > maxsize || n < 1) {  		printf("输入不合法\n");  		return; 	} 	for(int i=0;i<n;i++) 		L->data[i]=a[i]; 	L->length=n; }  int Empty(SqList *L) { 	if(L->length==0)  		return 1; 	else  		return 0; } void printout(SqList *L) { 	int i; 	//if(Empty(L)==0){ 	if (Empty(L)) { 		printf("空表"); 		return; 	} 	//for(i=0;i<=L->length;i++) 	for(i=0;i<L->length;i++) 		printf("%d ", L->data[i]); 	putchar(10); }  int main() {     int i,b,n; 	ElemType a[maxsize]; 	SqList *L;//,c;  	//L = &c; 	//L=(SqList*)malloc(maxsize); 	L=(SqList*)malloc(sizeof(SqList)); 	if (!L) 		return -1;  	printf("链表长度和各数据："); 	scanf("%d",&n); 	//for(i=0;i++;i<n) 	for(i=0;i<n; i++) 		scanf("%d",&a[i]); 	CreateList(L,a,n);  	printout(L); }   供参考～  建议对比代码找出不足；  SqList *L;//,c;  	//L = &c; 	//L=(SqList*)malloc(maxsize); 	L=(SqList*)malloc(sizeof(SqList)); 	if (!L) 		return -1; 两种赋值L的方法都可以，选择其中一种即可。

user: user-0
content: 引用 1 楼 coo135 的回复:你的Empty(SqList *L)，空表返回1，非空返回0。  而你在printout中， if(Empty(L)==0)  则输出空表~，把0改成1吧。  ！改完可以运行了 不过还是不能正确的显示……

user: user-2
content: 你的Empty(SqList *L)，空表返回1，非空返回0。  而你在printout中， if(Empty(L)==0)  则输出空表~，把0改成1吧。