Автор: Виктория Константиновна 23.4.2009, 12:01
Помогите добавить новые элементы в струтктуру! Необходимо что бы структура содержала не менее 4 элементов! А то ничего не получается!! Плииииз!!!
Или покажите пример любой реализации стека с помощью структур, чтобы струткура содержала несколько записей. Заранее спасибо!
Код
#include <stdio.h>
#include<stdlib.h>
struct Stack
{
int data;
struct Stack *next;
};
typedef struct Stack StackN;
typedef StackN *StackPtr;
void push( StackPtr *,int);
int pop(StackPtr*);
int isEmpty(StackPtr);
void printStack(StackPtr);
void instructions(void);
/*вставить значение в вершину стека*/
void push(StackPtr *top, int info)
{
StackPtr newP;
newP=(StackPtr)malloc(sizeof(StackN));
if(newP!=NULL)
{
newP->data=info;
newP->next=*top;
*top=newP;
}
else
printf("%d not inserted. No memory avaliable.\n",info);
}
/*стек пуст?*/
int isEmpty(StackPtr top)
{
return top==NULL;
}
int main()
{
StackPtr stackPtr=NULL; /*указывает на вершину стека*/
int choice, value;
instructions();
printf("?");
scanf("%d",&choice);
while(choice!=3)
{
switch(choice){
case 1: /*затолкнуть значение в стек*/
printf("Enter an integer: ");
scanf("%d", &value);
push(&stackPtr, value);
printStack(stackPtr);
break;
case 2: /*вытолкнуть значение из стека*/
if(!isEmpty(stackPtr))
printf("The popped value is %d.\n",
pop(&stackPtr));
printStack(stackPtr);
break;
default:
printf("Invalid choice.\n\n");
instructions();
break;
}
printf("?");
scanf("%d", &choice);
}
printf("End of run.\n");
return 0;
}
/*вывести инструкции*/
void instructions(void)
{
printf("Enter choice:\n"
"1 push a new element on the stack\n"
"2 pop a new element off the stack\n"
"3 end program\n");
}
/*удалить значение из вершины стека*/
int pop(StackPtr *top)
{
StackPtr temp;
int popValue;
temp=*top;
popValue=(*top)->data;
*top=(*top)->next;
free(temp);
return popValue;
}
/*распечатать содержимое стека*/
void printStack(StackPtr current)
{
if(current==NULL)
printf("The stack is empty.\n\n");
else {
printf("The stack is:");
while(current!=NULL){
printf("%d ",current->data);
current=current->next;
}
printf("NULL\n\n");
}
}
Автор: Inspektor 23.4.2009, 21:53
какая разница сколько записей? Объявляйте
Код
struct Stack
{
int data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,data10;
struct Stack *next;
};
и всё.