Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct node {
- int x;
- node *next;
- };
- void addnode(node *&poczatek);
- void show(node *poczatek);
- void deletevalue(node *poczatek);
- void delete2(node *poczatek);
- void swap(node *&poczatek);
- void swap2(node *poczatek);
- void findx(node *&poczatek);
- void changeside(node *&poczatek);
- void tailtohead(node *&poczatek);
- void deletexn(node *poczatek);
- int main() {
- node *poczatek;
- poczatek = NULL;
- int switchcase = 0;
- int end = 0;
- addnode(poczatek);
- do {
- cout << endl << endl;
- cout << "1-usun co 2 element\n2-zamien pierwszy z ostatnim\n3-co drugi element na koniec\n"
- << "4-usun co trzeci element\n5-znalezc elemnt o danej wartosci i go usunac\n6-zamiana stron\n7-ostatni element na poczatek\n8-usuwa n elementow za podanym x\n16-koniec" << endl;
- cin >> switchcase;
- show(poczatek);
- cout << endl << endl;
- switch (switchcase)
- {
- case 1:
- deletevalue(poczatek);
- show(poczatek);
- break;
- case 2:
- swap(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 3:
- swap2(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 4:
- delete2(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 5:
- findx(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 6:
- changeside(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 7:
- tailtohead(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 8:
- deletexn(poczatek);
- cout << endl << endl;
- show(poczatek);
- break;
- case 16:
- end = 1;
- break;
- }
- system("pause");
- system("cls");
- } while (end != 1);
- return 0;
- }
- void addnode(node *&poczatek) {
- node *temp = NULL;
- for (int a = 0;a <6;a++) {
- node *wsk = new node;
- if (poczatek == NULL)
- {
- cout << "Podaj liczbe: ";
- cin >> wsk->x;
- wsk->next = poczatek;
- poczatek = wsk;
- temp = poczatek;
- }
- else {
- cout << "Podaj liczbe: ";
- cin >> wsk->x;
- temp->next = wsk;
- wsk->next = NULL;
- temp = wsk;
- }
- }
- }
- void show(node *poczatek) {
- node *temp = poczatek;
- while (temp != NULL) {
- cout << temp->x << " ";
- temp = temp->next;
- }
- }
- void deletevalue(node *poczatek) {
- node *tmpHead = poczatek;
- while (tmpHead->next && tmpHead->next->next != NULL)
- {
- node* tmp = tmpHead->next;
- tmpHead->next = tmp->next;
- tmpHead = tmpHead->next;
- delete tmp;
- }
- if (tmpHead->next != NULL)
- {
- node* tmp = tmpHead->next;
- tmpHead->next = tmp->next;
- tmpHead = tmpHead->next;
- delete tmp;
- }
- }
- void swap(node *&poczatek)
- {
- node *tmpHead = poczatek;
- while (tmpHead->next->next && tmpHead->next != NULL) {
- tmpHead = tmpHead->next;
- }
- if (tmpHead->next != NULL) {
- node *tmpTail = tmpHead->next;
- tmpHead->next->next = poczatek->next;
- tmpHead->next = poczatek;
- poczatek->next = NULL;
- poczatek = tmpTail;
- }
- }
- void swap2(node *poczatek)
- {
- node *tmp2 = poczatek;
- while (tmp2->next != NULL) {
- tmp2 = tmp2->next;
- }
- node *tmphead = poczatek;
- node *tmp = poczatek;
- while (tmphead->next->next && tmphead->next != tmp2) {
- node *wsk = tmphead->next;
- tmphead->next = wsk->next;
- tmphead = tmphead->next;
- while (tmp->next != NULL) {
- tmp = tmp->next;
- }
- wsk->next = NULL;
- tmp->next = wsk;
- }
- }
- void delete2(node *poczatek) {
- node *temp = poczatek;
- while (temp->next && temp->next->next && temp->next->next->next != NULL) {
- node *wsk = temp;
- wsk = temp->next->next;
- temp->next->next = wsk->next;
- temp = temp->next->next;
- delete wsk;
- }
- if (temp->next && temp->next->next != NULL) {
- node *wsk = temp;
- wsk = temp->next->next;
- temp->next->next = wsk->next;
- delete wsk;
- }
- }
- void findx(node *&poczatek) {
- cout << "podaj wartosc x jaki ma zostac znaleziony i wykasowany: " << endl;
- int value;
- cin >> value;
- node *tmp = poczatek;
- if (tmp->x == value) {
- node *wsk = poczatek;
- poczatek = tmp->next;
- delete wsk;
- tmp = poczatek;
- }
- while (tmp->next != NULL) {
- if ((tmp->next && tmp->next->next != NULL) && (tmp->next->x == value)) {
- node *wsk = tmp;
- wsk = tmp->next;
- tmp->next = wsk->next;
- delete wsk;
- }
- if (tmp->next != NULL && tmp->next->x == value) {
- node *wsk = tmp;
- wsk = tmp->next;
- tmp->next = wsk->next;
- delete wsk;
- }
- else {
- tmp = tmp->next;
- }
- }
- }
- void changeside(node *&poczatek) {
- node *tmp = poczatek;
- node *wsk = poczatek;
- node *tmphead = poczatek;
- node *finalhead = poczatek;
- while (wsk->next && tmp->next->next != NULL) {
- wsk = wsk->next;
- tmp = tmp->next;
- }
- if (tmp->next && tmp->next->next == NULL) {
- tmp = tmp->next;
- tmp->next = poczatek;
- wsk->next = NULL;
- poczatek = tmp;
- }
- tmphead = poczatek;
- //---------------- // =) masakra (może i by się dało krócej no ale ważne, że działa ) :D
- while (finalhead->next != NULL)
- {
- wsk = poczatek;
- tmp = poczatek;
- while (wsk->next && tmp->next->next != NULL) {
- wsk = wsk->next;
- tmp = tmp->next;
- }
- if (tmp->next->next == NULL) {
- tmp = tmp->next;
- wsk->next = NULL;
- tmp->next = tmphead->next;
- tmphead->next = tmp;
- tmphead = tmphead->next;
- }
- }
- }
- void tailtohead(node *&poczatek) {
- node *tmp = poczatek;
- node *wsk = poczatek;
- if (tmp != NULL) {
- while (tmp->next && tmp->next->next != NULL) {
- tmp = tmp->next;
- }
- if (tmp->next && tmp->next->next != NULL) {
- wsk = tmp;
- tmp = tmp->next;
- tmp->next = poczatek;
- wsk->next = NULL;
- poczatek = tmp;
- }
- if (tmp->next != NULL) {
- wsk = tmp;
- tmp = tmp->next;
- tmp->next = poczatek;
- wsk->next = NULL;
- poczatek = tmp;
- }
- }
- }
- void deletexn(node *poczatek) {
- node *tmp = poczatek;
- int value,n;
- cout << "podaj liczbe: " << endl;
- cin >> value;
- cout << "podaj ilosc elementow do usuniecia" << endl;
- cin >> n;
- while (tmp && tmp->next != NULL) {
- if (tmp->x == value) {
- for (int a = 0;a < n;a++) {
- if (tmp->next != NULL)
- {
- node *wsk = tmp;
- wsk = wsk->next;
- tmp->next = wsk->next;
- delete wsk;
- }
- else {
- cout << "nie ma tylu elemntow do usuniecia !" << endl;
- }
- }
- tmp = tmp->next;
- }
- else {
- tmp = tmp->next;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement