Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
FinKeRosiN
3 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 31
#1

Динамические структуры данных.Стек. - C++

05.05.2011, 22:23. Просмотров 2638. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Нужна помощь в выполнении лабораторной работы
Необходимо создать простую базу данных, которая хранит анкеты для бюро по трудоустройству. Реализовать используя стек, т.е. там 4 поля: имя, специальность, номер анкетки и дата рождения.
Операции, которые выполняет программа:
-вывод на экран;
-добавление в вершину стека;
-удаление из вершины;
-очистка памяти;
-проверка на заполненность/пустоту;
-добавление в конец;
-удаление по ключу(ключ-номер анкеты т.е. вбиваешь номер и удаляется анкета только с тем номером)

у меня проблема с последними 2-мя операциями-не могу написать написать функцию поиска для удаления по ключу. прошу помощи, заранее спасибо

надеюсь код правильно вставил
Код
#include "stdafx.h"
#include <iostream>
#include <cstdlib>

using namespace std;
const int N=100;
struct worker {
	char name[N];
	char spec[N];
	int numb;
	char date[N];
};

struct STACK {
	worker info;
	STACK *next;
};



int Empty(STACK *stack)
{
	if (stack==NULL)
		return 0;
	else 
		return 1;
}
void Add(STACK **stack, worker d)
{
	STACK *tmp = new STACK;
	tmp->info=d;
	tmp->next=*stack;
	*stack=tmp;

}
void Del(STACK **stack)
{
	STACK *tmp=*stack;
	*stack=(*stack)->next;
	delete tmp;
}

void Show(STACK *stack)
{
	STACK *tmp=stack;
	while(tmp!=NULL)
	{
		cout << "Имя: "<< tmp->info.name << endl;
		cout << "Специальность: "<< tmp->info.spec << endl;
		cout << "Номер анкеты: "<< tmp->info.numb << endl;
		cout << "Дата заполнения: "<< tmp->info.date << endl << endl;
		tmp=tmp->next;
	}
}

void ClearAll(STACK **stack)
{
	STACK *tmp;
	while(*stack!=NULL)
	{
		tmp=*stack;
		*stack=(*stack)->next;
		delete tmp;
	}
}

int main()
{
	setlocale(LC_ALL,"Russian");
	STACK *stack=NULL;
	int num,Key;
	STACK info;
	worker d;
	char otv;

	do
	{
		cout << endl <<"1. Добавление элементов в вершину стека" << endl 
			<< "2. Удаление элемента из вершины стека" << endl
			<< "3. Вывод элементов" << endl 
			<< "4. Удаление по ключу" << endl
			<< "0. Выход" << endl;
		cout << "Ваш выбор: ";
		cin >> otv;
		switch(otv)
		{
		case '1':
			cout << "Введите имя" << endl;
			cin >> d.name;
			cout << "Введите специальность" << endl;
			cin >> d.spec;
			cout << "Введите номер анкеты" << endl;
			cin >> d.numb;
			cout << "Введите дату заполнения" << endl;
			cin >> d.date;
			Add(&stack,d);
			cout << endl << "Элементы добавлены" << endl;
			cout << endl << "Элементы стека:" << endl << endl;
			Show(stack);
			break;
		case '2':
			if (Empty(stack)==0)
				cout << endl << "Стек пуст" << endl;
			else
			{
				Del(&stack);
				cout << endl << "Элемент удален из вершины стека" << endl;
				cout << endl << "Элементы стека:" << endl << endl;
				Show(stack);
			}
			break;
		case '3':
			if (Empty(stack)==0)
				cout << endl << "Стек пуст" << endl;
			else
			{
				cout << endl << "Элементы стека:" << endl;
				Show(stack);
				cout << endl;
			}
			break;
		case '0':
			ClearAll(&stack);
			break;
		default:
			cout << endl << "Ошибка" << endl;
			break;
		}

	}while(otv!='0');
	cin.get();

}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2011, 22:23     Динамические структуры данных.Стек.
Посмотрите здесь:

Динамические структуры данных.Стек. Значение выражения в постфиксной форме - C++
Пусть строка символов, введенная с клавиатуры, задает выражение, записанное в постфиксной форме (например, 6523+8*+3+*). В выражении...

Динамические структуры. Стек (помогите найти ошибку) - C++
помогите найти ошибку. Есть задание: построить стек, элементами которого являются слова текста,которые считываются из текстового файла....

Структуры данных(СТЕК) - C++
Помогите написать, или исправьте, плиз, мою программку. Здесь - стек. надо создать меню, где можно вывести, создать и удалить элемент со...

[C++] Динамические структуры данных - C++
Здравствуйте. Есть такой код в таких файлах: Основной .cpp-файл программы#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Динамические структуры данных. Дек - C++
Ребята помогите, горит степуха! Динамически разработать и реализовать на языке С следующие функции работой с Деком: 1. Создание...

Динамические структуры данных о квартирах - C++
нужно помочь дорешать совсем запутался Задание: Определите алгоритм решения задачи (в словесной или графической форме); Создайте...

Динамические структуры данных на языке С/С++ - C++
Сформировать динамическую структуру,содержащую данные по студентам в следующем виде: &quot;Фамилия Имя Группа ГР RS&quot;, где ГР – год рождения, RS...

Динамические структуры данных на языке С/С++ - C++
Сформировать динамическую структуру (вид структуры выбирается по варианту из табл. 39), содержащую данные по студентам в следующем...

Указатели и динамические структуры данных - C++
В данный момент занимаюсь изучением динамических структур данных и указателей, и вот вот возник вопрос, есть ли разница изучать эту тему в...

Задача на динамические структуры данных - C++
Прошу помочь с выполнением задания. Дан одномерный динамический массив А, размер которого вводится и заранее неизвестен. Сформировать...

Динамические структуры данных. Односвязные списки - C++
Вот код. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace std; const int k = 101;...

Динамические информационные структуры данных. (Дек) - C++
Разработать и реализовать на языке С следующие функции работой с деком: 1. Создание пустого дека. 2. Добавление элемента в дек. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.05.2011, 04:07     Динамические структуры данных.Стек. #2
C++
1
int DelKey(STACK **stack, int numb);
если анкета удалена, возвратить 1, иначе 0
создаёшь цикл, который проходит по всем элементам
в цикле проводится сравнение numb и curr->numb
если они равны, перецепить следующий элемент на место текущего
текущий освободить

чтобы знать, куда перецеплять, нужен дополнительный указатель prev, который будет хранить адрес предыдущего элемента
он в цикле как бы преследует curr

получится
C++
1
2
    prev->next = curr->next;
    del curr;
FinKeRosiN
3 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 31
07.05.2011, 23:15  [ТС]     Динамические структуры данных.Стек. #3
__UP___

Добавлено через 1 минуту
у меня только указатель на след. элемент *next
но я могу использовать временные
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.05.2011, 08:33     Динамические структуры данных.Стек. #4
prev не в узле, а отдельная переменная, которая следует в цикле за curr
Yandex
Объявления
09.05.2011, 08:33     Динамические структуры данных.Стек.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru