• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы snusnu
  • Дата начала
S

snusnu

вот что я накалякал...
должно по идее выводить первый элемент стека (ну лн в принципе пока тут и единственный), но вылетает либо 0 либо адрес памяти ли ещё что то)) не могу понять в чем дело..помогите, пожалуйста!
п.с. компилятор BC31 ;)

[codebox]#include <stdio.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>

//stek
struct stek {int value; struct stek *next;};

//pushing
stek *pushing(stek *st, int val){
stek *f, *g = new stek;
g->value = val;
g->next = NULL;
if (st->next == NULL) {st = g;}
else{
for (f = st; f->next != 0; f = f->next){
f->next = g;
}
}
return st;
}

//popping
stek *popping(stek *st){
stek *s, *q = new stek;
int i;
i = 0;
if (st == NULL) {cout<<"\n Error: stek pust";}
else {
for (q = st; i != 1; q = q->next){
if (q->next == NULL) {
i = 1;
s = q;
delete st;
}
else {break;}
}
}
return s;
}

////////////////
//prosmotr spiska
void scan (stek *st) // zagolovok spiska
{
stek *p = new stek;
for (p = st; p != NULL; p = p->next)
printf ("%d ", *p);
printf ("\n");
}
////////////////

void main(){
int n;
stek *ST = new stek;
cout<<"\nEnter pls. : ";
cin>>n;
pushing(ST, n);
cout<<"\n N ="<<n;
scan(ST);
[/codebox]
}
 
C

Creo

Посмотри следующие строчки
ты уверен, что по умолчанию value==0, а next==NULL?
Следующую смотри вот эту строчку
if (st->next == NULL) {st = g;}
Не советую тебе писать вот так
Лучше так
Код:
stek *f=NULL;
stek *g = new stek;
Попробуй воспользоваться дебагером, поможет)))
И если это C++, мне кажется удобнее бы было воспользоваться классами...
 
S

skysun

Обрати внимание на STL. Если, конечно, вы списки руками организовываете не в "научных" целях.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!