23.05.2016, 13:45
общий
это ответ
Вот Вам программа для хранения в стеке строк
[code h=200]
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct Stack
{
char* info;
struct Stack *next;
}Stack_t;
Stack *Top, *NE, *End;
void push(Stack_t **head, char* data)
{
Stack_t *tmp = (Stack_t*)malloc(sizeof(Stack_t));
if (tmp == NULL)
{
exit(0);
}
tmp->info = (char*)malloc(strlen(data)+1);
if (tmp->info == NULL)
{
exit(0);
}
tmp->next = *head;
strcpy(tmp->info, data);
*head = tmp;
}
char* pop(Stack_t **head)
{
Stack_t *out;
char* value;
if (*head == NULL)
{
exit(0);
}
out = *head;
*head = (*head)->next;
value = out->info;
free(out);
return value;
}
char* pick(Stack_t* head)
{
if (head == NULL)
{
exit(0);
}
return head->info;
}
void show_stack(Stack_t* head)
{
while (head)
{
cout << head->info << " ";
head = head->next;
}
cout << endl;
}
int getSize(Stack_t *head)
{
int size = 0;
while (head)
{
size++;
head = head->next;
}
return size;
}
int main()
{
setlocale(LC_ALL, "Russian");
Stack s;
Stack_t *head = NULL;
int key;
char value[256];
do
{
cout << "1. Добавить" << endl;
cout << "2. Удалить" << endl;
cout << "3. Top" << endl;
cout << "4. Размер" << endl;
cout << "5. Показать стек" << endl;
cout << "0. Выход\n" << endl;
cout << "Команда: "; cin >> key;
switch (key)
{
case(1) :
{
cout << "Введите значене: "; cin >> value; push(&head, value);
} break;
case(2) :
{
if (head)
{
free(pop(&head)); cout << "Удален" << endl;
}
else
cout << "Стек пуст" << endl;
} break;
case(3) :
{
cout << "Top: " << pick(head) << endl;
} break;
case(4) :
{
cout << "Размер стека: " << getSize(head) << endl;
} break;
case(5) :
{
show_stack(head);
} break;
case 0: break;
default: cout << endl << "Ошибка\n\n";
break;
}
} while (key != 0);
return 0;
}[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен