Creative Commons License Foxbond's Repo

/**(c) 2016 Michał (Foxbond) Chraniuk */
#define _CRT_SECURE_NO_WARNINGS
#include <string>
#include <iostream>
#include <conio.h>


using namespace std;

//element stosu
typedef struct elem {
	char name[50];
	int age;
	int lp;
	struct elem *prev;
}elem;


elem *root = NULL;
int lp = 1;


void cls() {
	system("cls");
}
void addPerson();
void delPerson();
void getPerson();
void printStack();

//utowrzenie węzła
elem* createElem(string name, int age) {

	elem* osoba = (elem*)malloc(sizeof(elem));

	strcpy(osoba->name, name.c_str());
	osoba->age = age;
	osoba->lp = lp++;
	osoba->prev = NULL;
	return osoba;
}


//dodanie elementu na stos
void addElem(elem* osoba) {

	if (root == NULL) {//pierwszy element jako korzeń
		root = osoba;
		return;
	}

	osoba->prev = root;
	root = osoba;
}


int main() {

	char opt;
	do {
		cls();

		cout << "1. Dodaj osobe\n2. Wyswietl stos\n3. Pobierz ostatnia osobe\n4. Pobierz osobe o konkretnym nr\n0. Wyjscie\n";
		opt = _getch();

		if (opt == '1') {
			addPerson();
		}
		else if (opt == '2') {
			printStack();
		}
		else if (opt == '3') {
			delPerson();
		}
		else if (opt == '4') {
			getPerson();
		}


	} while (opt != '0');


	return 0;
}

//dodanie osoby 
void addPerson() {

	string imie;
	int wiek;

	cls();
	cout << "Podaj imie: ";
	cin >> imie;
	cout << "\nPodaj wiek: ";
	cin >> wiek;

	addElem(createElem(imie, wiek));
}

//wyswietlenie stosu
void printStack() {
	cls();

	if (root == NULL) {
		cout << "Stos jest pusty";
		_getch();
		return;
	}

	cout << "lp\tWiek\tImie\n";

	elem* temp = root;
	while (temp != NULL) {
		cout << temp->lp << "\t" << temp->age << "\t" << temp->name << "\n";
		temp = temp->prev;//zdejmowanie po jednym elemencie
	}

	_getch();
}

//usuniecie osoby
void delPerson() {
	cls();

	if (root == NULL) {
		cout << "Stos jest pusty";
		_getch();
		return;
	}

	cout << "Lp: " << root->lp << "\nWiek: " << root->age << "\nImie: " << root->name << "\n";

	root = root->prev;
	_getch();
}


//pobranie os o konkretnym nr
void getPerson() {
	int numer;

	cls();

	if (root == NULL) {
		cout << "Stos jest pusty";
		_getch();
		return;
	}

	cout << "Podaj nr: ";
	cin >> numer;

	elem* temp = root;
	while (temp != NULL) {
		
		if (temp->lp == numer) {
			cout << "Znaleziono:\n" << "Lp: " << temp->lp << "\nWiek: " << temp->age << "\nImie: " << temp->name << "\n";
			_getch();
			return;
		}

		temp = temp->prev;
	}

	cout << "Nie znaleziono osoby o takim numerze!";
	_getch();

}

> Back