Обява

Свий
Няма добавени обяви.

Помощ зо стек с меню в С

Свий
X
 
  • Филтър
  • Час
  • Покажи
Изчисти всичко
нови мнения

  • Помощ зо стек с меню в С

    Ох, хора, моля помогнете. От няколко дена се мъча да направя стек в С с меню и все нещо не става. Моля, който разбира от С- да помогне. Имам нужда от помощ в завършващата част- вкарването на числа чрез менюто. Пробвах с case, а и предпочитам, но ми е по- трудно. Ако някой даде с case- малко обяснение и ще го разбера. Сега пробвам с if. Имам представата как да го направя, но технически не мога да свържа въведените числа с функцията push, а от там и pop- ът не работи. Изкарва произволни числа. Работата е горе- долу спешна- имам още 2 дена, докато ми потрябва. Ето до къде я докарах. Предполагам, че на някой ще му настръхнат косите от програмата, ама много я заплетох- признавам.

    //stack

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

    int d,c,v;
    typedef struct Stack *PStack;
    struct Stack
    {
    int data;
    PStack next;
    };

    PStack push (PStack head, PStack e)
    {
    e->next = head;
    head = e;
    return head;
    }

    PStack pop (PStack head)
    {
    if (head == NULL)
    return NULL;
    printf ("%d\n", head->data);
    PStack tmp = head->next;
    free (head);
    head = tmp;
    return head;
    }

    PStack create (int data)
    {
    PStack p;
    scanf("%d\n", &p);
    p=(PStack) malloc (sizeof (struct Stack));
    p->data = data;
    p->next = NULL;
    return p;
    }

    int main ()
    {
    /*int d, c, v;*/
    PStack head = NULL;
    printf("1 za vkarvane \n");
    printf("2 za izkarvane \n");
    scanf("%d", &d);
    if (d == 1)
    {
    printf("Kolko 4isla?: ");
    scanf("%d", &v);
    for(v=0; c++; v++);

    printf("Chislo \n");

    head = push (head, create (c));

    }

    if (d == 2)
    printf("Izkarvam: \n");
    head = pop (head);
    return 0;
    }
    Последно редактирано от Александър Белов; 21-06-10, 18:19.
    JEEP CHEROKEE '86 XJ 4.0

    Манол Денев

  • #2
    От: Помощ зо стек с меню в С

    Ц не ми е от най-любимите, но все пак нещо близо до твоето решение.
    //stack

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

    typedef struct Stack *PStack;
    struct Stack
    {
    int data;
    PStack next;
    };

    PStack push (PStack head)
    {
    PStack p;
    p=(PStack) malloc (sizeof (struct Stack));
    printf("Vavedi chislo: ");
    scanf("%d", &p->data);
    p->next = head;
    return p;
    }

    PStack pop (PStack head)
    {
    if (head == NULL)
    return NULL;
    printf ("Izkarvam %d\n", head->data);
    PStack tmp = head->next;
    free (head);
    head = tmp;
    return head;
    }

    int main(int argc, char *argv[])
    {
    int d,c,v;

    PStack head = NULL;
    for ( ;; ) {
    printf("1 za vkarvane \n");
    printf("2 za izkarvane \n");
    printf("0 za izhod \n");

    scanf("%d", &d);

    // izhod ot menuto
    if (0 == d) break;

    printf("Kolko 4isla?: ");
    scanf("%d", &v);

    // Vavezhdane na v chisla
    if (d == 1)
    for(c=0; c<v; c++)
    head = push (head);

    // Izvezhdane na v chisla
    if (d == 2)
    for(c=0; c<v; c++)
    head = pop (head);

    } // for

    return 0;
    }

    Коментар

    Активност за темата

    Свий

    В момента има 1 потребители онлайн. 0 потребители и 1 гости.

    Най-много потребители онлайн 8,787 в 16:37 на 21-06-23.

    Зареждам...
    X