【发布时间】:2018-05-18 06:39:53
【问题描述】:
我需要做的是将一个输入文件读入一个链表。部分文件是:
姓名A,25岁
姓名B, 33
姓名 C, 23
姓名 D,39 岁
之后我需要按数字排序(冒泡排序)并将其写入另一个文件。
这是我所拥有的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node{
char name[20];
int number;
struct node *next;
struct node *prev;
}*head;
int main(void) {
struct node *temp;
temp = malloc(sizeof(struct node));
temp->next = NULL;
head = temp;
FILE *ifp;
char fnamer[100] = "";
char line[128];
// printf("\n\nPlease Enter the Full Path of the file: \n");
// scanf("%s",&fnamer);
ifp = fopen("mintaadatok.txt", "r");
if (ifp == NULL) {
printf("\n%s\" File NOT FOUND!", fnamer);
exit(1);
}
int c = 0;
char buffer[1024];
memset(buffer, 0, 1024);
while (c < 15) {
fgets(buffer, 1024, ifp);
sscanf(buffer, "%19[^,], %d", temp->name, &temp->number);
printf("%d %s %d\n", c, temp->name, temp->number);
temp->next = malloc(sizeof(struct node));
temp = temp->next;
temp->next = NULL;
c++;
}
int i,step;
for (temp = head; temp; temp = temp->next) {
printf("%s", temp->name);
printf("%d\n", temp->number);
for(step=0;step<10-1;++step)
for(i=0;i<10-step-1;++i)
{
temp->next = malloc(sizeof(struct node));
if(temp->number>temp->next)
{
temp=temp->number;
temp->number=temp->next;
temp->next=temp;
}
}
}
printf("In ascending order: ");
}
你能帮我整理一下这些数据吗?
【问题讨论】:
-
您面临的具体问题是什么?
-
@AditiRawat 我无法对链表进行冒泡排序
-
@coderredoc 是的,它会有很大帮助
-
首先你还没有为排序方法编写任何代码;您只是在填充列表。其次,为了对链表执行几乎所有操作,您需要一个未存储在此处的
head指针。最后,如果你有head指针,一个简单的谷歌搜索(你的问题标题)会产生有用的结果。 -
那么您可能应该向我们展示您编写的排序代码,然后我们可能会提供帮助。 :)
标签: c sorting struct linked-list bubble-sort