user-0 提问: 大佬看一下为何执行不出来啊，C语言

回复:
user: user-0
content: 引用 2 楼 拥抱Linux的回复:主要是（1）locateNode函数，（2）fun函数里的语句有缺陷。更新后的代码如下，有问题的地方已经用注释说明了。  #include <stdio.h> #include <stdlib.h> #define MAX 10 #define MAXIN 5 typedef int ElemType; typedef struct Inode { 	ElemType(*elem); 	int length; 	int listsize; } Sqlist; //Sqlist L; //没有用上的全局变量 void Initlist(Sqlist *L) { /*顺序表初始化*/ 	L->elem = (ElemType *)malloc(MAX * sizeof(ElemType)); 	if (!L->elem) { 		printf("申请空间失败!!!\n"); 		exit(0); 	} else { 		L->length = 0; 		L->listsize = MAX; 	} }  void Setlist(Sqlist *L) { 	ElemType y, *new; 	printf("连续输入，当输入0时停止\n"); 	scanf("%d", &y); 	while (y != 0) { 		L->elem[L->length] = y; 		L->length++; 		if (L->length >= L->listsize) { 			new = (ElemType *)realloc(L->elem, (L->listsize + MAXIN) * sizeof(ElemType)); 			if (!new) { 				printf("存储空间分配失败!\n"); 				exit(0); 			} else { 				L->elem = new; 				L->listsize += MAXIN; 			} 		} 		scanf("%d", &y); 	} } void Printlist(Sqlist L) { 	int i; 	printf("输出顺序表:\n"); 	for (i = 0; i < L.length; i++) 		printf("%d\t", L.elem[i]); 	printf("\n"); } int locateNode(Sqlist *list, ElemType x) { 	int i = 0; 	for (i = 0; i < list->length; i++) { 		if (list->elem[i] == x) { 			return 0; 		} 		//return -1;  // 有问题，阻止了循环的正常执行 	}         //  没有找到匹配的值，返回-1         return -1; } int fun(Sqlist *a, Sqlist *b, Sqlist *L) { 	int i = 0, j = 0, e; 	for (i = 0; i < a->length; i++) { 		e = a->elem[i]; 		if (locateNode(b, e) == 0) { 			L->elem[j++] = a->elem[i];                         // 还应该同步更新L->length的值                         L->length++; 		} 	}         // 函数缺少返回值语句，         // 从整个程序来看，添加也可以，把函数改成void也可以         // 这里就不添加了 } int main() { 	Sqlist L1; 	Sqlist L2; 	Sqlist L3; 	Initlist(&L1); 	Initlist(&L2); 	Initlist(&L3); 	Setlist(&L1); 	Setlist(&L2); 	fun(&L1, &L2, &L3); 	Printlist(L1); 	Printlist(L2); 	Printlist(L3); 	printf("\n"); }   Linux环境测试运行截图：   希望能帮到你，欢迎及时确认、结贴、给分！ ：） 谢谢啊，受益匪浅，解决了问题

user: user-1
content: #include<stdio.h> #include<stdlib.h>  #define MAX 10 #define MAXIN 5  typedef int ElemType; typedef struct Inode {     //ElemType (*elem);     ElemType *elem;     int length;     int listsize; }Sqlist;  Sqlist L;  void Initlist(Sqlist *L) {     /*顺序表初始化*/     L->elem=(ElemType *)malloc(MAX*sizeof(ElemType));     if(!L->elem)     {         printf("申请空间失败!!!\n");         exit(0);     }     //else    // {         L->length=0;         L->listsize = MAX;     //} }  void Setlist(Sqlist *L) {     //ElemType y,*new;     ElemType y, *pnew;      printf("连续输入，当输入0时停止\n");     scanf("%d",&y);     while(y!=0)     {         L->elem[L->length]=y;         L->length++;         if(L->length>=L->listsize)         {             pnew=(ElemType *)realloc(L->elem,(L->listsize+MAXIN) *sizeof(ElemType));             if(!pnew)             {                 printf("存储空间分配失败!\n");                 exit(0);             }             //else             //{                 L->elem = pnew;                 L->listsize += MAXIN;             //}         }         scanf("%d", &y);     } } void Printlist(Sqlist L) {     int i;     printf("输出顺序表:\n");     for(i=0;i<L.length;i++)         printf("%d\t",L.elem[i]);     printf("\n"); } int locateNode(Sqlist *list,ElemType x) {     int i=0;     for(i=0;i < list->length; i++)     {         if(list->elem[i] == x)         //{             return 0;         //}         //return -1;     }     return -1; }  int fun(Sqlist *a,Sqlist *b,Sqlist *L) {     int i=0,j=0,e;     for(i=0;i<a->length;i++)     {         e = a->elem[i];         if(locateNode(b,e) == 0){             if (L->length < L->listsize)             //L->elem[j++] = a->elem[i];                 L->elem[L->length++] = a->elem[i];         }      }      return 0; } int main() {     Sqlist L1;     Sqlist L2;     Sqlist L3;     Initlist(&L1);     Initlist(&L2);     Initlist(&L3);     Setlist(&L1);     Setlist(&L2);     fun(&L1,&L2,&L3);     Printlist(L1);     Printlist(L2);     Printlist(L3);     printf("\n"); }  供参考！  注意你在给L3赋值时，你是否修改了L3的length呢，没有修改L3的length，那么Printlist如何打印L3呢，其他问题详见上面的代码。

user: user-2
content: new是c++关键字，你用c++编译器是编译不出来的，得用c编译器~  你把new随便换个名字就可以了~~

user: user-3
content: 主要是（1）locateNode函数，（2）fun函数里的语句有缺陷。更新后的代码如下，有问题的地方已经用注释说明了。  #include <stdio.h> #include <stdlib.h> #define MAX 10 #define MAXIN 5 typedef int ElemType; typedef struct Inode { 	ElemType(*elem); 	int length; 	int listsize; } Sqlist; //Sqlist L; //没有用上的全局变量 void Initlist(Sqlist *L) { /*顺序表初始化*/ 	L->elem = (ElemType *)malloc(MAX * sizeof(ElemType)); 	if (!L->elem) { 		printf("申请空间失败!!!\n"); 		exit(0); 	} else { 		L->length = 0; 		L->listsize = MAX; 	} }  void Setlist(Sqlist *L) { 	ElemType y, *new; 	printf("连续输入，当输入0时停止\n"); 	scanf("%d", &y); 	while (y != 0) { 		L->elem[L->length] = y; 		L->length++; 		if (L->length >= L->listsize) { 			new = (ElemType *)realloc(L->elem, (L->listsize + MAXIN) * sizeof(ElemType)); 			if (!new) { 				printf("存储空间分配失败!\n"); 				exit(0); 			} else { 				L->elem = new; 				L->listsize += MAXIN; 			} 		} 		scanf("%d", &y); 	} } void Printlist(Sqlist L) { 	int i; 	printf("输出顺序表:\n"); 	for (i = 0; i < L.length; i++) 		printf("%d\t", L.elem[i]); 	printf("\n"); } int locateNode(Sqlist *list, ElemType x) { 	int i = 0; 	for (i = 0; i < list->length; i++) { 		if (list->elem[i] == x) { 			return 0; 		} 		//return -1;  // 有问题，阻止了循环的正常执行 	}         //  没有找到匹配的值，返回-1         return -1; } int fun(Sqlist *a, Sqlist *b, Sqlist *L) { 	int i = 0, j = 0, e; 	for (i = 0; i < a->length; i++) { 		e = a->elem[i]; 		if (locateNode(b, e) == 0) { 			L->elem[j++] = a->elem[i];                         // 还应该同步更新L->length的值                         L->length++; 		} 	}         // 函数缺少返回值语句，         // 从整个程序来看，添加也可以，把函数改成void也可以         // 这里就不添加了 } int main() { 	Sqlist L1; 	Sqlist L2; 	Sqlist L3; 	Initlist(&L1); 	Initlist(&L2); 	Initlist(&L3); 	Setlist(&L1); 	Setlist(&L2); 	fun(&L1, &L2, &L3); 	Printlist(L1); 	Printlist(L2); 	Printlist(L3); 	printf("\n"); }   Linux环境测试运行截图：   希望能帮到你，欢迎及时确认、结贴、给分！ ：）

user: user-4
content: new可能是个关键字，可以换成别的，比如snew snew = (Sqlist*)realloc(L->elem, (L->listsize + MAXIN) * sizeof(ElemType));