From e413f3fc478da395fab295671b1ccd9f5bdb5b7e Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 2 Mar 2021 22:45:12 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=87=D0=B5=D1=82=D0=B2?= =?UTF-8?q?=D1=91=D1=80=D1=82=D0=BE=D0=B9=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=20=D1=81=D0=B2=D1=8F=D0=B7=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- list/list.h | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 list/list.h (limited to 'list/list.h') diff --git a/list/list.h b/list/list.h new file mode 100644 index 0000000..fe2c967 --- /dev/null +++ b/list/list.h @@ -0,0 +1,100 @@ +#include + +struct list +{ + int inf; + list *next; + list *prev; +}; + + +void push(list *&h, list *&t, int x) +{ + list *r = new list; + r->inf = x; + r->next = NULL; + if (!h && !t) + { + r->prev = NULL; + h = r; + } + else + { + t->next = r; + r->prev = t; + } + t = r; +} + +void print(list *h, list *t) +{ + list *p = h; + while (p) + { + std::cout << p->inf << " "; + p = p->next; + } +} + +list *find(list *h, list *t, int x) +{ + list *p = h; + while (p) + { + if (p->inf == x) break; + p = p->next; + } + return p; +} + +void insert_after(list *&h, list *&t, list *r, int y) +{ + list *p = new list; + p->inf = y; + if (r == t) + { + p->next = NULL; + p->prev = r; + r->next = p; + t = p; + } + else { + r->next->prev = p; + p->next = r->next; + p->prev = r; + r->next = p; + } +} + +void del_node(list *&h, list *&t, list *r) +{ + if (r == h && r == t) + h = t = NULL; + else if (r == h) + { + h = h->next; + h->prev = NULL; + } + else if (r == t) + { + t = t->prev; + t->next = NULL; + } + else + { + r->next->prev = r->prev; + r->prev->next = r->next; + } + delete r; +} + +void del_list(list *&h, list *&t) +{ + while (h) + { + list *p = h; + h = h->next; + h->prev = NULL; + delete p; + } +} -- cgit v1.2.3