ZBLOG

#include #include typedef struct node{ float X; int Z; struct node *next; }Node; bool InitNode(Node* head){ Node* H=(Node*)malloc(sizeof(Node)); if(H==NULL) return false; H->next=NULL; return true; } Node creat(Node* h...

这段代码中存在一些问题导致输出结果始终相同。以下是需要修正的地方:

  1. InitNode 函数中,应该将传入的指针 head 指向新分配的头结点 H,而不是将新分配的头结点赋值给 H

  2. creat 函数中,应该使用传入的头结点指针进行链表操作,而不是在函数内部重新分配一个头结点。

  3. output 函数中,在调用 printf 输出时,应该使用 %f^%d 而不是 &p->X, &p->Z

此外,你还需要在主函数中通过传递指针来修改链表并打印输出结果。修复后的代码如下所示:

#include <stdio.h>
#include <malloc.h>

typedef struct node {
	float X;
	int Z;
	struct node* next;
} Node;

bool InitNode(Node** head) {
	*head = (Node*)malloc(sizeof(Node));
	if (*head == NULL) return false;
	(*head)->next = NULL;
	return true;
}

void creat(Node* head) {
	Node* r = head, * s;  //r为表尾指针 
	int a = 1, b = 1;
	while (1) {
		s = (Node*)malloc(sizeof(Node));
		scanf("%d,%d", &a, &b);
		if (a == 0 && b == 0) break;
		else {
			s->X = (float)a;
			s->Z = b;
			r->next = s;
			r = s;
		}
	}
}

void output(Node* head) {
	Node* p = head->next;
	while (p != NULL) {
		printf("%.1f^%d ", p->X, p->Z);
		p = p->next;
	}
	printf("\n");
}

int main() {
	Node* head;
	if (!InitNode(&head)) {
		printf("Initialization failed.\n");
		return 0;
	}

	creat(head);
	output(head);

	return 0;
}

修正后的代码将能够正确读取输入数据,并按照指数表达式的格式打印输出链表节点。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8653

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?