user-0 提问: Program received signal SIGSEGV,Segmentation fault.

回复:
user: user-0
content: 引用 5 楼 自信男孩的回复:#include <stdio.h> #include <stdlib.h>  typedef struct node { 	int data; 	struct node *next; }LinkQueueNode;  typedef struct { 	LinkQueueNode *front; 	LinkQueueNode *rear; }LinkQueue;  int InitQueue(LinkQueue *Q) { 	Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); 	if(Q->front!=NULL) 	{ 		Q->rear=Q->front; 		Q->front->next=NULL; 		return 1; 	} 	else 	{ 		return 0; 	} }  int EnterQueue(LinkQueue *Q,int x) { #if 1 	LinkQueueNode *p; 	p = (LinkQueueNode *)malloc(sizeof(LinkQueueNode)); 	if (!p) 		exit(0); 	p->data=x; 	p->next=NULL; 	Q->rear->next=p; 	Q->rear=p;  #else 	LinkQueueNode *p; 	p=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); 	if(p!=NULL) 	{ 		p->data=x; 		p->next=NULL; 		Q->rear->next=p; 		Q->rear=p; 		return 1; 	} 	else 		return 0; #endif } int DeleteQueue(LinkQueue *Q,int *x) { #if 1 	LinkQueueNode *p; 	if(Q->front == Q->rear) 		return 0; 	p = Q->front->next; 	Q->front->next = p->next; 	if(Q->rear == p) 		Q->rear=Q->front; 	*x = p->data; 	free(p); 	return 1;  #else 	LinkQueueNode *p; 	if(Q->front->next!=Q->rear) 	{ 		p=Q->front->next; 		Q->front->next=p->next; 		if(Q->rear==p) 			Q->rear=Q->front; 		*x=p->data; 		free(p); 		return 1; 	} 	else 		return 0; #endif }  int main() { 	LinkQueue *Q; 	Q = (LinkQueue *)malloc(sizeof(LinkQueue)); 	if (!Q) 		return -1;  	InitQueue(Q); 	printf("请输入数据（-1表示结束）："); 	int x; 	int f = 0; 	scanf("%d",&x); 	while(x!=-1) 	{ 		EnterQueue(Q,x); 		scanf("%d",&x); 		f=1; 	} 	if (f!=1) { 		printf("未输入数据！\n"); 		return 0; 	} 	//if(f==1) //	{ 		printf("输入数据为："); 		//while(Q->front->next != Q->rear) 		while(Q->front != Q->rear) 		{ 			DeleteQueue(Q,&x); 			printf("%d ",x); 		} //	} //	else //		printf("未输入数据！\n"); 	return 0; }   供参考～ 感谢！！🙏🙏🙏

user: user-1
content: #include <stdio.h> #include <stdlib.h>  typedef struct node { 	int data; 	struct node *next; }LinkQueueNode;  typedef struct { 	LinkQueueNode *front; 	LinkQueueNode *rear; }LinkQueue;  int InitQueue(LinkQueue *Q) { 	Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); 	if(Q->front!=NULL) 	{ 		Q->rear=Q->front; 		Q->front->next=NULL; 		return 1; 	} 	else 	{ 		return 0; 	} }  int EnterQueue(LinkQueue *Q,int x) { #if 1 	LinkQueueNode *p; 	p = (LinkQueueNode *)malloc(sizeof(LinkQueueNode)); 	if (!p) 		exit(0); 	p->data=x; 	p->next=NULL; 	Q->rear->next=p; 	Q->rear=p;  #else 	LinkQueueNode *p; 	p=(LinkQueueNode *)malloc(sizeof(LinkQueueNode)); 	if(p!=NULL) 	{ 		p->data=x; 		p->next=NULL; 		Q->rear->next=p; 		Q->rear=p; 		return 1; 	} 	else 		return 0; #endif } int DeleteQueue(LinkQueue *Q,int *x) { #if 1 	LinkQueueNode *p; 	if(Q->front == Q->rear) 		return 0; 	p = Q->front->next; 	Q->front->next = p->next; 	if(Q->rear == p) 		Q->rear=Q->front; 	*x = p->data; 	free(p); 	return 1;  #else 	LinkQueueNode *p; 	if(Q->front->next!=Q->rear) 	{ 		p=Q->front->next; 		Q->front->next=p->next; 		if(Q->rear==p) 			Q->rear=Q->front; 		*x=p->data; 		free(p); 		return 1; 	} 	else 		return 0; #endif }  int main() { 	LinkQueue *Q; 	Q = (LinkQueue *)malloc(sizeof(LinkQueue)); 	if (!Q) 		return -1;  	InitQueue(Q); 	printf("请输入数据（-1表示结束）："); 	int x; 	int f = 0; 	scanf("%d",&x); 	while(x!=-1) 	{ 		EnterQueue(Q,x); 		scanf("%d",&x); 		f=1; 	} 	if (f!=1) { 		printf("未输入数据！\n"); 		return 0; 	} 	//if(f==1) //	{ 		printf("输入数据为："); 		//while(Q->front->next != Q->rear) 		while(Q->front != Q->rear) 		{ 			DeleteQueue(Q,&x); 			printf("%d ",x); 		} //	} //	else //		printf("未输入数据！\n"); 	return 0; }   供参考～

user: user-2
content: 段错误，检查下是否有数组越界，或者说malloc的时候是否有类型的不符合，比如将一个int类型的数赋给了一个malloc出来的char数组。

user: user-0
content: 引用 3 楼 user-2的回复:[quote=引用 2 楼 hua____hua 的回复:] [quote=引用 1 楼 user-2的回复:]段错误，检查下是否有数组越界，或者说malloc的时候是否有类型的不符合，比如将一个int类型的数赋给了一个malloc出来的char数组。 是因为我的data类型是int的原因嘛。。。[/quote]  看了下 你这里陷入死循环了 scanf("%d",&x);     while(x!=-1)     {         EnterQueue(Q,x);         f=1;     } 随便输个不等于-1的数就死循环了  你是不是想这样写     //scanf("%d",&x);     while(scanf("%d",&x) && x!=-1)     {         EnterQueue(Q,x);         f=1;     }  这样我运行了一下能运行，但好像输出的不是想要的结果，你再看看吧。 [/quote] 好的感谢！我再去试试！

user: user-2
content: 引用 2 楼 hua____hua 的回复:[quote=引用 1 楼 user-2的回复:]段错误，检查下是否有数组越界，或者说malloc的时候是否有类型的不符合，比如将一个int类型的数赋给了一个malloc出来的char数组。 是因为我的data类型是int的原因嘛。。。[/quote]  看了下 你这里陷入死循环了 scanf("%d",&x);     while(x!=-1)     {         EnterQueue(Q,x);         f=1;     } 随便输个不等于-1的数就死循环了  你是不是想这样写     //scanf("%d",&x);     while(scanf("%d",&x) && x!=-1)     {         EnterQueue(Q,x);         f=1;     }  这样我运行了一下能运行，但好像输出的不是想要的结果，你再看看吧。

user: user-0
content: 引用 1 楼 user-2的回复:段错误，检查下是否有数组越界，或者说malloc的时候是否有类型的不符合，比如将一个int类型的数赋给了一个malloc出来的char数组。 是因为我的data类型是int的原因嘛。。。