IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Помогите изменить код программы, стек, С++!
Виктория Константиновна
сообщение 23.4.2009, 12:01
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 22.4.2009
Город: Минск, Беларусь



Помогите добавить новые элементы в струтктуру! Необходимо что бы структура содержала не менее 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
Сообщение #2


Аспирант
***

Группа: Активисты
Сообщений: 384
Регистрация: 11.6.2008
Город: Крыжополь
Учебное заведение: БГТУ
Вы: студент



какая разница сколько записей? Объявляйте
Код
struct Stack
{
  int data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,data10;
  struct Stack *next;
};

и всё.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 25.5.2025, 20:19

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru