IteratorChooseSort

Run Settings
LanguageC++
Language Version
Run Command
#include "stdafx.h" #include <iostream> #include <string> using namespace std; struct list { void *val; list *prev; list *next; }; void showCHAR(list *q) //функция вывода строк { for (; q != NULL; q = q->next) { cout << (char*)q->val << " "; } cout << " "; } void compareINT(list *j, list *k, int &flag) //Функция сравнения чисел { if (j->val<k->val) flag = 1; else flag = 0; } void compareCHAR(list *j, list *k, int &flag) //Функция сравнения строк { int h; char* c = (char*)j->val; char* x = (char*)k->val; h = strcmp(c, x); if (h<0) flag = 1; else flag = 0; } void sort(list *q, void(*pp)(list*, list*, int &)) //Сортировка выбором, для чисел и строк { list* i = q; list* k = q; list* j = q; int n = 0, flag = 0; for (; i->next != NULL; i = i->next) { for (j = i->next, k = i; j != NULL; j = j->next) { pp(j, k, flag); if (flag == 1) { k = j; n = 1; } } if (n == 1) swap(i->val, k->val); flag = 0; } } list *writeINT(list *q, int m) //Функция ввода чисел { list *t = new list;; list *r = new list; t->val = (int*)m; t->next = NULL; if (q == NULL) q = t; else { for (r = q; r->next != NULL; r = r->next); r->next = t; } return q; } list *writeCHAR(list *q, char m[]) //Функция ввода строк { list *p = new list; list *r = new list; p->val = (void*)m; p->next = NULL; if (q == NULL) { q = p; } else { for (r = q; r->next != NULL; r = r->next); r->next = p; } return q; } void main() { setlocale(LC_ALL, "Russian"); list *q = NULL; char m[100][100]; int l = -1, u = 0, menu; { cout << "1)По числам" << endl; cout << "2)По строкам" << endl; cin >> menu; switch (menu) { case 1: { for (;;) { cin >> u; if (u == -1) break; else { q = writeINT(q, u); } } sort(q, compareINT); for (; q->next != NULL; q = q->next) { cout << (int)q->val << " "; } cout << (int)q->val << " "; case 2: { do { l++; cin >> m[l]; } while (m[l][0] != '0'); while (l>0) { l--; q = writeCHAR(q, m[l]); } sort(q, compareCHAR); showCHAR(q); } } } } system("pause"); }
Editor Settings
Theme
Key bindings
Full width
Lines