Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите изменить код программы, стек, С++! > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
Виктория Константиновна
Помогите добавить новые элементы в струтктуру! Необходимо что бы структура содержала не менее 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
какая разница сколько записей? Объявляйте
Код
struct Stack
{
  int data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,data10;
  struct Stack *next;
};

и всё.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.