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

Тема в разделе "Общие вопросы по С и С++", создана пользователем snusnu, 13 ноя 2008.

  1. snusnu

    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]
    }
     
  2. Creo

    Creo Гость

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

    skysun Гость

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

Поделиться этой страницей