第18題怎么做啊


uj5u.com熱心網友回復:
演算法學得不好,僅供參考
#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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282932.html
標籤:新手樂園