قمت بعمل برنامج يطبق مبدأ stack وأعتقد أنكم تعرفون ما هو stack.
قمت بكتابة الكود التالي:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 5
typedef struct stack {
int ele[MAX];
int top;
}stack;
void create_empty_stack(stack *s) {
s->top=-1;
}
int isfull (stack *s) {
if (s->top==MAX-1) return 1; else return 0;
}
int isempty (stack *s) {
if (s->top==-1) return 1; else return 0;
}
void push (stack *s, int item) {
if (isfull) {
printf ("\nFull!");return;
}
s->top++;
s->ele[s->top]=item;
}
int pop (stack *s) {
if (isempty) {
printf ("\nEmpty!");return -1;
}
return (s->ele[s->top--]);
}
void trav (stack *s) {
int i;
for (i=0;i<=s->top;i++)
printf ("%d\n",s->ele);
}
int peek (stack *s) {
if (isempty (s)) printf ("\nEmpty!");
return s->top;
}
void main () {
stack *s;
s=(stack *)malloc(sizeof(stack));
int p;
int item, choice;
create_empty_stack (s);
while (1) {
clrscr();
printf ("1. Push\n"
"2. Pop\n"
"3. Trav\n"
"4. Peek\n"
"5. exit\n"
"\n Enter your choice: ");
scanf ("%d",&choice);
switch (choice) {
case 1:
printf ("\nEnter a number");
scanf ("%d",&item);
push (s,item);
break;
case 2:
printf ("%d", pop(s)); getch();break;
case 3: trav(s);getch();break;
case 4: printf("\n%d", peek(s));getch();break;
case 5: exit (1);
}
}
}ولكنه لا يعمل، حيث أنه لا يضيف أي عناصر للقائمة، ولا أعرف ما هو السبب.
أرجو المساعدة فوراً ولكم جزيل الشكر
ملاحظة: هذا كود سي، ولكنني قمت بكتابته على كمبايلر سي++. وما أريده كود سي.
