C语言求解

宫薪添 2021-05-05 10:24:12
第18题怎么做啊
...全文
293 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
宫薪添 2021-05-10
  • 打赏
  • 举报
回复
引用 1 楼 浪客的回复:
算法学得不好,仅供参考


#include <stdio.h>
#include <stdlib.h>

typedef struct NUM
{
	int num;
	struct NUM* next;
}Num;

void print(Num* p)
{
	if (p == NULL) return;
	while (p->next != NULL)
	{
		printf("%d ", p->num);
		p = p->next;
	}
	printf("\n");
}


int main()
{
	FILE* file;
	file = fopen("t.txt", "r+");
	if (!file)
	{
		printf("文件打开错误!\n");
		return 1;
	}
	Num* p, * head = (Num*)malloc(sizeof(Num));
	if (!head) return 2;
	head->next = NULL;
	p = head;
	while (!feof(file))
	{
		fscanf(file, "%d", &(p->num));
		p->next = (Num*)malloc(sizeof(Num));
		if (!(p->next)) return 2;
		p = p->next;
		p->next = NULL;

	}
	fclose(file);
	print(head);

	Num* t = NULL, * q = (Num*)malloc(sizeof(Num));
	if (!q) return 2;
	scanf("%d", &q->num);
	q->next = NULL;

	p = head;
	while (1)
	{
		if (p->num < q->num)
		{
			t = p;
			p = p->next;
			if (p->next == NULL)
			{
				t->next = q;
				q->next = p;
				break;
			}
			continue;
		}

		if (p == head)
		{
			t = head;
			head = q;
			head->next = t;			
			break;
		}
		else {
			t->next = q;
			q->next = p;
			break;
		}

	}
	print(head);

	file = fopen("t.txt", "w+");
	if (!file)
	{
		printf("文件打开错误!\n");
		return 1;
	}
	p = head;
	while (p->next)
	{
		fprintf(file, " %d", p->num);		
		p = p->next;
	}
	fclose(file);
}

谢谢老哥,太赞了
浪客 2021-05-05
  • 打赏
  • 举报
回复
算法学得不好,仅供参考


#include <stdio.h>
#include <stdlib.h>

typedef struct NUM
{
	int num;
	struct NUM* next;
}Num;

void print(Num* p)
{
	if (p == NULL) return;
	while (p->next != NULL)
	{
		printf("%d ", p->num);
		p = p->next;
	}
	printf("\n");
}


int main()
{
	FILE* file;
	file = fopen("t.txt", "r+");
	if (!file)
	{
		printf("文件打开错误!\n");
		return 1;
	}
	Num* p, * head = (Num*)malloc(sizeof(Num));
	if (!head) return 2;
	head->next = NULL;
	p = head;
	while (!feof(file))
	{
		fscanf(file, "%d", &(p->num));
		p->next = (Num*)malloc(sizeof(Num));
		if (!(p->next)) return 2;
		p = p->next;
		p->next = NULL;

	}
	fclose(file);
	print(head);

	Num* t = NULL, * q = (Num*)malloc(sizeof(Num));
	if (!q) return 2;
	scanf("%d", &q->num);
	q->next = NULL;

	p = head;
	while (1)
	{
		if (p->num < q->num)
		{
			t = p;
			p = p->next;
			if (p->next == NULL)
			{
				t->next = q;
				q->next = p;
				break;
			}
			continue;
		}

		if (p == head)
		{
			t = head;
			head = q;
			head->next = t;			
			break;
		}
		else {
			t->next = q;
			q->next = p;
			break;
		}

	}
	print(head);

	file = fopen("t.txt", "w+");
	if (!file)
	{
		printf("文件打开错误!\n");
		return 1;
	}
	p = head;
	while (p->next)
	{
		fprintf(file, " %d", p->num);		
		p = p->next;
	}
	fclose(file);
}

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧