Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2022, 01:21   #1
Vaden
Новичок
Джуниор
 
Регистрация: 12.05.2022
Сообщений: 3
По умолчанию Односвязный список. Работа с текстовыми данными.

Написал код, который создает односвязный список и выполняет стандартные операции с ним.
Но мой список может работать только с числами (int), теперь нужно что бы он мог работать с текстовыми данными. При том что по постановке задачи указано что "Стандартные классы и STL не использовать", то есть класс "string", если я правильно понимаю, использовать я не могу.
Пробовал использовать "char" вместо "int" и записывать через scanf("%s", &numb), но при выполнении функции push(добавление в конец), записывается в список совсем не то, что нужно. Так же, вместо "int" использовал массив сhar`ов (char data[255]), и для записи gets(), но тогда возникает больше количество ошибок, к примеру "|17|error: incompatible types in assignment of 'char' to 'char [255]'" и т.д.

Как мне следует изменить код что бы список поддерживал работу с текстовыми данными (желательно с строками и пробелами, к примеру с текстом "Привет мир!")?

Вот сам код:
Код:
/**Работа с текстовыми данными*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <fstream>
using namespace std;
struct Node
{
char data[255];
struct Node *next;
};

void append(struct Node** head_ref, char* new_data) ///добавление в 
конец
{

struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
struct Node *last = *head_ref;
new_node->data = new_data;
new_node->next = NULL;
if (*head_ref == NULL)
{
*head_ref = new_node;
return;
}
while (last->next != NULL)
last = last->next;
last->next = new_node;
return;
}

void printList(struct Node *node) ///печать списка
{
printf("--------СПИСОК--------\n\n");
while (node != NULL)
{
printf(" %s ", node->data);
node = node->next;
}
}

int main()
{
    setlocale(LC_ALL,"RUSSIAN");
    SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в 
    поток ввода
    SetConsoleOutputCP(1251); // установка кодовой страницы в поток 
    вывода
    struct Node* head = NULL;

    int keys;//переменная для switch
    while (1)
    {
    printf("1. Добавить в конец списка\n");
    printf("2. Печать списка\n");
    printf("0. Выход\n\n");
    printf("Ваш Выбор: ");
    scanf("%d", &keys);
    switch(keys){

    case 0:
    {
        system("CLS");
        break;
    }

    case 1:///Добавить звено в конец списка
    {
        system("CLS");

        printf("Введите Число: ");
        char new_numb[255];
        scanf("%s", &new_numb);//переменная в которую записывается 
        число для добавления в список
        char numb[256];
        strcpy(numb, new_numb);
        append(&head, numb);
        system("CLS");
        continue;
       }

    case 2:///Печать
    {
        system("CLS");
        printList(head);//печать
        printf("\n\n");
        system("PAUSE");
        system("CLS");
        continue;
    }

}
return 0;
}
}
Упростил код до 2-х функций, пробую применить тип массив чаров char[255], но та же ошибка.

P.S. Решил проблему, использовав
Код:
char data[255]
и запись через функцию
Код:
gets()
. Тему можно считать закрытой.

Последний раз редактировалось Vaden; 13.05.2022 в 23:08.
Vaden вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си Работа с символьными и текстовыми данными artilun Помощь студентам 2 29.10.2016 15:44
Часть кода сделал. Односвязный список без заглавного звена. Динамическая память. Перевернуть список и считать в обратном порядке. Varner Общие вопросы Delphi 5 19.05.2016 17:30
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52