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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 13:12   #1
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию односвязный список(язык Си)

создать одосвязный список целых чисел

не могу найти ошибку в программе? пожалуйста подскажите


#include <stdio.h>
#include <stdlib.h>
#include <conio,h>
#include <ctype.h>

typedef struct Spis {
int number;
struct Spis *next;
}Spis;

void Enquenue(void);
void Display(void);

Spis *begin=NULL, *end=NULL;

main()
{
void Enquenue(void)
{
Spis *p;
p=new Spis;

p->number=rand();
p->next=NULL;

if (begin==NULL)
begin = p;
else
end->next=p;
end=p;
}

void Display(void);
{
Spis *p= begin;
if(p==NULL)
printf("Queueis empty");
else
printf("Queue");
while(p!=NULL) {
printf("\n%d", p->number);
p=p->next;
}
}
спасибо!
bars1984 вне форума Ответить с цитированием
Старый 17.05.2009, 14:17   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

typedef struct Spis {
int number;
struct Spis *next;
}Spis;

void Enquenue(void);
void Display(void);

Spis *begin=NULL;

int main()
{
Enquenue();
Display();
getch();
}

void Enquenue(void)
{
Spis *p,*tmp;
p=new Spis;

p->number=0;
p->next=NULL;
begin = p;

for(int i=1; i<10; i++)
 {
  tmp = new Spis;
  p->next = tmp;
  tmp->next = NULL;
  tmp->number = i;
  p = p->next;
 }
}

void Display(void)
{
Spis *p= begin;
if(p==NULL)
 printf("Queueis empty");
else
 printf("Queue");
while(p!=NULL)
 {
 printf("\n%d", p->number);
 p=p->next;
 }
}
Только хорошо бы еще добавить функцию удаления списка.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 14:56   #3
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию

как на основании приведенного раннее списка сформировать новый список, в который необходимо поместить элементы из первого списка(последний элемент станет первым, предпоследний-вторым т.д.)?
bars1984 вне форума Ответить с цитированием
Старый 17.05.2009, 15:11   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
как на основании приведенного раннее списка сформировать новый список, в который необходимо поместить элементы из первого списка(последний элемент станет первым, предпоследний-вторым т.д.)?
Проходите по списку до конца. Берете последний элемент и кладете его в новый список. Потом удаляете из исходного.

А вообще, лучше, наверное, через рекурсию сделать. То есть погружаетесь в исходный список (рекурсивно вызывая себя), а следующей инструкцией добавляете текущую вершину в новый список.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 18:56   #5
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию

Цитата:
как на основании приведенного раннее списка сформировать новый список, в который необходимо поместить элементы из первого списка(последний элемент станет первым, предпоследний-вторым т.д.)?
используя вашу объяснения я написала программу
пишет,что ошибок нет,но программа не работает.
почему?

#include <stdio.h>
#include <stdlib.h>

struct Spis {
int number;
struct Spis *next;
};

struct Spis *input(void)
{
struct Spis *i,*tmp;
i= new Spis;

for(int l=1; l<10; l++)
{
tmp = new Spis;
i->next = tmp;
tmp->next = NULL;
tmp->number = l;
i = i->next;
}
if(i->number ==0)
return 0;
else{
i->next= input();
return i;
}
}

void output(struct Spis *i)
{
if(i==0)
{
printf("spisok ispol\n");
return;
}
printf(" %d", i->number);
output(i->next);
}

void main()
{
struct Spis *beg=NULL;
printf("Enter:");
beg=input();

printf("\nspisok:");
output(beg);
}
bars1984 вне форума Ответить с цитированием
Старый 17.05.2009, 19:43   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

bars1984, оформляйте код в теги CODE!!! Читать его в таком виде просто невозможно. Да и желания нет.
На предыдущем примере:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

typedef struct Spis {
int number;
struct Spis *next;
} Spis;

void Enquenue(Spis**);
void Display(Spis*);
void GetNewSpis(Spis**, Spis*);


int main()
{
Spis *begin=NULL;
Spis *newspis,*p;

Enquenue(&begin);
Display(begin);
printf("\n New Spis:\n");
newspis = new Spis;
p = newspis;
GetNewSpis(&newspis, begin);
delete[] newspis;
newspis = NULL;
Display(p);

getch();
}

void Enquenue(Spis **begin)
{
Spis *p,*tmp;
p=new Spis;

p->number=0;
p->next=NULL;
*begin = p;

for(int i=1; i<10; i++)
 {
  tmp = new Spis;
  p->next = tmp;
  tmp->next = NULL;
  tmp->number = i;
  p = p->next;
 }
}

void Display(Spis *begin)
{
Spis *p= begin;
if(p==NULL)
 printf("Queueis empty");
else
 printf("Queue");
while(p!=NULL)
 {
 printf("\n%d", p->number);
 p=p->next;
 }
}

void GetNewSpis(Spis **nsp, Spis *p)
{
 if(!p) return;
 Spis *g;
 GetNewSpis(nsp, p->next);
 (*nsp)->number = p->number;
 (*nsp)->next = new Spis;
 (*nsp)->next->next = NULL;
 (*nsp) = (*nsp)->next;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.05.2012, 11:25   #7
Makaronnik54
Новичок
Джуниор
 
Регистрация: 15.05.2012
Сообщений: 1
Восклицание

Помогите сделать прогу на си++ по спискам. Нужна программа которая удаляет все минимальные значения из односвязного списка и еще одна которая меняет местами минимальные и максимальные элементы в двухсвязном списке! Буду чрезмерно преблагодарен тому програмисту который сможет сделать эти проги!
Makaronnik54 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Односвязный список. С++ Ozza Помощь студентам 1 06.02.2009 02:09
Шаблонный односвязный список _ares_ Общие вопросы C/C++ 4 06.12.2008 21:35
КОЛЬЦЕВОЙ ОДНОСВЯЗНЫЙ СПИСОК __FIRST__ Помощь студентам 0 01.11.2008 17:16
C: односвязный список в файле getfear Помощь студентам 7 04.01.2008 19:26
Кольцевой односвязный список jukk Общие вопросы Delphi 3 22.12.2006 12:10