Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Работа с файлами и списками

Автор: Лок 16.11.2006 19:26

Здравствуйте.
Стоит такая задача: в файле записаны строки, эти строкиа надо разбить на слова и слова записать в списки, т.е. собственно списки идут друг за другом, надо реализовать добавление слов в эту последовательность с конца и с начала, т.е. сначала перейти в последний список и заложить туда элемент и потом идти к первому, в другом случае начать с первого и идти до последнего списка..... Вот так. Прозьба Выполнить на Си, компилтор желателен VS.

Заранее благодарю
С уважением.

Автор: Алена 16.11.2006 22:08

Попробуй прогнать вот это:

#include <stdio.h>
#include <alloc.h>

typedef char *T;

typedef
struct node {
T value;
struct node *next;
} *List;

List create_node(T val) {

List p = (List)malloc(sizeof(struct node));
p -> value = (char *)malloc(strlen(val)+1);
strcpy(p -> value, val);
p -> next = NULL;

return p;

}

List Init(List *L) {

return *L = NULL;

}

List insert(T val, List L) {

List p = create_node(val);
p -> next = L;
return p;

}

void printlist(List L) {

printf("\n");
for(; L != NULL; L = L -> next)
printf("%15s", L -> value);
}


List append(T val, List L) {
List head;
if(!L) {
L = create_node(val);
return L;
}
else {
head = L;
while(L -> next != NULL) L = L -> next;
L -> next = create_node(val);
return head;
}
}

int main(void) {

FILE *f;
char s[200], *p, *delimiter = "\n .,!?";
List L;

Init(&L);

f = fopen("text700.txt", "rt");
while(!feof(f)) {

fgets(s, 200, f);
p = (char *)strtok(s, delimiter);
while(p) {
L = append(p, L);
p = (char *)strtok(NULL, delimiter);
}

}
printlist(L);
/*
Не забудь удалить содержимое списка !!!
*/
return 0;
}

Автор: ЛОК 17.11.2006 2:02

Спасибо, попробую.... компилятор будет уже только собственно на занятиях потому там и прогоню...если будет не сложно нет ли возможности добавить комментари для лучшего понимания программы....