Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 24

Задача с односвязным и двухсвязным списком (сортировка).

01.11.2011, 22:34. Показов 1736. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
Структура содержит название издания, газета или журнал, цена экземпляра. Добавлять новые издания так, чтобы названия были упорядочены по алфавиту.
Выполнить в двух вариантах, с односвязным и двухсвязным.
Help!

Добавлено через 5 часов 3 минуты
up. Заранее спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2011, 22:34
Ответы с готовыми решениями:

Работа с линейным односвязным (двухсвязным) списком
Создать линейный односвязный (двухсвязный) список. Из списка удалить положительные элементы, превышающие заданную величину, а затем...

Задача с односвязным списком
Ребята, нужна помощь, кто может составьте. Буду благодерен. У меня не получается, т.к руки кривые. Задача: Напишите программу,...

В чём разница между односвязным списком и односвязным стэком?
*весь вопрос находится в названии*

2
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 24
03.11.2011, 20:14  [ТС]
Кто может помочь с добавлением записи в список?

Добавлено через 20 часов 4 минуты
Есть ввод и вывод односвязного списка , осталась добавить запись, отсортировать и перебить под двухсвязный.
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
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include<iostream>
struct ListBook
{char izd[20];                                                      //Издание
 char vid[20];                                                 //журнал или газета
 char cena[5];                                                      //цена
 struct ListBook *next;                                             //указание на следующую структуру
};
struct ListBook *create(void);                                      //функция создания списка (возвращает адрес его головы)
void list(ListBook *head);                                          // функция просмотра списка
struct ListBook *head;                                              // глобальная переменная, адрес головы списка
int main()
{  setlocale(0,"");
   head=create();
   list(head);
   free(head);}
struct ListBook * create(void)
{  ListBook *p, *pred;
   char c;                                                         // pred – указатель на предыдущую структуру
   head=pred=p=(ListBook *)malloc(sizeof(ListBook));               //выделяем память для первой записи
   printf("Введите название издания "); scanf("%s", p->izd);
        printf("Введите газета или журнал "); scanf("%s", p->vid);
        printf("Введите цену экземпляра "); scanf("%s", p->cena);
   do { p=(ListBook *)malloc(sizeof(ListBook));
        printf("Введите название издания "); scanf("%s", p->izd);
        printf("Введите газета или журнал "); scanf("%s", p->vid);
        printf("Введите цену экземпляра "); scanf("%s", p->cena);
        pred->next=p; //ссылка из предыдущей записи на текущую
        pred=p; // сохранение адреса текущей записи в поле предыдущей
        printf(" Закончить? y/n  ");
        c=getch();
       } while (c!='y');
   p->next=NULL;
   return head;}
void list(ListBook *head)
{  ListBook *p;
   p=head;
   while (p!=NULL) 
   {  printf("\n  Название издания: %s",p->izd);
      printf("\n  Газета или журнал: %s",p->vid);
      printf("\n  Цена экземпляра: %s",p->cena);
      p=p->next; 
   }
   getch();
}
0
0 / 0 / 1
Регистрация: 09.11.2010
Сообщений: 24
17.12.2011, 18:14  [ТС]
Лучший ответ Сообщение было отмечено Hellraiserrr как решение

Решение

Написал функцию сортировки, но она замещает все записи, т.е. выводится только ново вводимая.
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**/
 
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include<iostream>
struct ListBook
{char izd[50];                                                      //Издание
 char vid[50];                                                 //журнал или газета
 char cena[20];                                                      //цена
 struct ListBook *next;                                             //указание на следующую структуру
};
typedef struct ListBook listnode;
typedef listnode *listnodeptr;
 
void insert(listnodeptr *,char[50],char[50],char[20]);
struct ListBook *create(void);                                      //функция создания списка (возвращает адрес его головы)
void list(ListBook *head);                                          // функция просмотра списка
struct ListBook *head;                                              // глобальная переменная, адрес головы списка
int main()
{  listnodeptr startptr=NULL;
    char item1[50],item2[50],item3[20];
    setlocale(0,"");
   head=create();
   list(head);
   printf("\nВведите дополнительную запись\n");
      printf("Введите название издания "); scanf("%s", item1);
        printf("Введите газета или журнал "); scanf("%s", item2);
        printf("Введите цену экземпляра "); scanf("%s", item3);
        insert(&startptr,item1,item2,item3);
        head=(ListBook *)malloc(sizeof(ListBook));
        list(startptr);
   free(head);
}
struct ListBook * create(void)
{  ListBook *p, *pred;
   char c;                                                         // pred – указатель на предыдущую структуру
   head=pred=p=(ListBook *)malloc(sizeof(ListBook));               //выделяем память для первой записи
   printf("Введите название издания "); scanf("%s", p->izd);
        printf("Введите газета или журнал "); scanf("%s", p->vid);
        printf("Введите цену экземпляра "); scanf("%s", p->cena);
   do { p=(ListBook *)malloc(sizeof(ListBook));
        printf("Введите название издания "); scanf("%s", p->izd);
        printf("Введите газета или журнал "); scanf("%s", p->vid);
        printf("Введите цену экземпляра "); scanf("%s", p->cena);
        pred->next=p; //ссылка из предыдущей записи на текущую
        pred=p; // сохранение адреса текущей записи в поле предыдущей
        printf(" Закончить? y/n  ");
        c=getch();
       } while (c!='y');
   p->next=NULL;
   return head;
}
void list(ListBook *head)
{  ListBook *p;
   p=head;
   while (p!=NULL) 
   {  printf("\n  Название издания: %s",p->izd);
      printf("\n  Газета или журнал: %s",p->vid);
      printf("\n  Цена экземпляра: %s",p->cena);
      p=p->next; 
   }
   getch();
}
 
 
void insert(listnodeptr *sptr, char value1[50], char value2[50], char value3[20])
{
   listnodeptr newptr,previousptr,currentptr;
newptr=(ListBook *)malloc(sizeof(ListBook));
if(newptr!=NULL)
{
    strcpy(newptr->izd,value1);
    strcpy(newptr->vid,value2);
    strcpy(newptr->cena,value3);
    newptr->next=NULL;
    previousptr=NULL;
    currentptr=*sptr;
    while (currentptr!=NULL && value1[0]>currentptr->izd[0])
    {
        previousptr=currentptr;
    currentptr=currentptr->next;
    }
if (previousptr==NULL)
    {
        newptr->next=*sptr;
        *sptr=newptr;
    }
else 
    {
        previousptr->next=newptr;
        newptr->next=currentptr;
    }
 
}
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2011, 18:14
Помогаю со студенческими работами здесь

Ошибка 0xC0000005 при работе с двухсвязным списком
В общем и целом, пытаюсь реализовать дерево как двунаправленный список для сортировки заданного массива симметричным обходом. Получается,...

Реализация с односвязным списком
Приветствую! Есть созданная программа: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;clocale&gt; #include &lt;string.h&gt; ...

Работа с односвязным списком
Дан односвязный список. Класс студент (фамилия группа). Сделать меню, т.е. удаление элемента из начала списка, добавление элемента в начало...

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

Работа с односвязным списком
Есть два вопроса 1)как найти сумму двух соседних элементов элемента x. 2)Как сделать чтоб функция RemovePositive удаляла все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru