Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Список фамилий. Упорядочить их по алфавиту http://www.cyberforum.ru/c-beginners/thread1133839.html
Заданный список фамилий. Упорядочить их по алфавиту. Проверить написания первой большой буквы ПОМОГИТЕ , НИЧЕГО НЕ ВЫХОДИТ (
C (СИ) Удаление Node из Linked List
Всем привет, нужно написать функцию удаляющую обьект из Linked List. подпись функции: int remove(llist *list, node* item) функция должна вернуть 0 если удалила или -1 если что то пошло не...
C (СИ) В символьной строке удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву
Люди помогите написать программу на языке C(Cu), в символьной строке удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву.
C (СИ) Снегопад в окне Нужно написать код, чтобы в появившемся окне падал снег. Заранее спасибо. http://www.cyberforum.ru/c-beginners/thread1133782.html
C (СИ) Удалить из строки все гласные буквы http://www.cyberforum.ru/c-beginners/thread1133716.html
#include <stdio.h> #include <conio.h> #include <iostream> #include <string.h> void main() { setlocale(0,""); int l,i,k,m; char s; printf("\n введите строку транслитом не...
C (СИ) Сравнить первые десять символов двух строк
Ввести строки. Сравнить первые десять символов двух строк. Если они одинаковы, объединить две строки, исключив из второй первые десять символов. В случае отличия первых десяти символов скопировать...
C (СИ) Посчитать сколько слов, содержит текст произвольной длинны
Посчитать сколько слов, содержит текст произвольной длинны. Разделителем между словами является символ пробела. Вывести на экран список всех встречающихся в тексте слов и их количество. Указание:...
C (СИ) Какие курсы, тренинги, семинары, книги и прочее Вы бы могли рекомендовать? Здравствуйте, дорогие друзья!:) Хочу изучить язык программирования C++ Раньше никогда не сталкивался с языками программирования. Поведайте мне пожалуйста: С чего начать? Какие курсы, тренинги,... http://www.cyberforum.ru/c-beginners/thread1133599.html
C (СИ) Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом http://www.cyberforum.ru/c-beginners/thread1133580.html
Элементы матрицы заполнить, используя функцию генератора случайных чисел. Программу написать двумя способами: 1) осуществляя доступ к элементам матрицы с помощью индексов; 2) осуществляя доступ...
C (СИ) Преобразовать массив, прибавив к четным числам последний элемент Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам последний элемент. Последний элемент массива не изменять. Осуществить сдвиг влево на k позиций, где k – число нечетных... http://www.cyberforum.ru/c-beginners/thread1133573.html
akalji
3 / 3 / 2
Регистрация: 10.03.2014
Сообщений: 51
0

Связный список. Необходимо создать новый связный список только из положительных элементов

30.03.2014, 14:54. Просмотров 951. Ответов 1
Метки (Все метки)

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

Вот мой код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <stdio.h>
#include <stdlib.h>
 
typedef struct Node_s{
    Node_s* Next;
    int Value;
 
}Node_t;
 
void newlist(int N, char* fname);
void readList(Node_t* G, char* fname);
void SaveList(Node_t* G, char* fname);
void onlyPositive(Node_t* G, Node_t* Pos);
 
int main(){
    int N=10;
    char *INfname = {"input.txt"};
    char *OUTfname = {"output.txt"};
    newlist(N, INfname);
    Node_t G;
    Node_t Positive;
    readList(&G, INfname);
    SaveList(&G, OUTfname);
    onlyPositive(&G, &Positive);
    
 
    return 0;
}
 
 
void newlist(int N, char* fname){
    FILE* f = fopen(fname,"w");
    int i;
    for(i=0; i<N; i++){
        fprintf(f, "%d\n", rand()-RAND_MAX/2);
    }
}
 
void readList(Node_t* G, char* fname){
    FILE* f = fopen(fname,"r");
    Node_t *list = (Node_t*)malloc(sizeof(Node_t));
    int tmp;
    fscanf(f, "%d\n", &tmp);
    list->Value=tmp;
    list->Next=NULL;
    G=list;
 
    while(!feof(f)){
        list->Next = (Node_t*)malloc(sizeof(Node_t));
        fscanf(f, "%d\n", &tmp);
        list -> Next->Value=tmp;
        list = list->Next;      
    }
 
}
 
void onlyPositive(Node_t* G, Node_t* Pos){
    Node_t* currentG = G;
    Node_t* currentP = Pos;
    while(currentG){   
        if(currentG->Value>0){
            currentP->Value = currentG->Value;
            if(currentG->Next){currentP->Next = (Node_t*)malloc(sizeof(Node_t));}else{currentP->Next=NULL;}
            if(currentP->Next){currentP=currentP->Next;}
        }
        currentG = currentG->Next; 
      
    }
}
 
void SaveList(Node_t* G, char* fname){
    FILE* f = fopen(fname,"w");
    Node_t* current = G;
    while(current) 
    { 
        fprintf(f, "%d\n", current->Value);
        current = current->Next; 
    }  
}


Вернуться к обсуждению:
Связный список. Необходимо создать новый связный список только из положительных элементов
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 14:54
Готовые ответы и решения:

Написать функцию, которая добавляет новый элемент в связный список
Доброго времени суток, продолжаю изучать самостоятельно Си по книге Кочана Стефана &quot;Язык...

Связный список: вставить в список перед каждым вхождением элемента K элемент L
Разработать программу, которая создает список, элементами которого являются целые числа. ...

Инициализация, добавление и удаление элементов в СТЕКЕ через связный список
День добрый, нужна помощь со стеками. Передо мною стоит задача: 1) Инициализировать СТЕК через...

Запись в связный список из файла
Описание списков: typedef struct name { char first_name; char last_name; int...

Связный список, объясните ошибки
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt; string.h &gt; #include &lt;assert.h&gt; typedef...

1
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.