Ох, хора, моля помогнете. От няколко дена се мъча да направя стек в С с меню и все нещо не става. Моля, който разбира от С- да помогне. Имам нужда от помощ в завършващата част- вкарването на числа чрез менюто. Пробвах с 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;
}
//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;
}
Коментар