Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <conio.h>
- using namespace std;
- struct Node{
- int d;
- Node *next;
- Node *prev;
- };
- Node * first (int d);
- void add (Node ** pend, int d);
- Node *find (Node *const pbeg, int i);
- bool remove (Node **pbeg, Node **pend, int key);
- Node * insert (Node * const pbeg, Node **pend, int key, int d);
- int main() {
- Node *pbeg = first(1);
- Node *pend = pbeg;
- for (int i=2; i<6;i++) add (&pend, i);
- insert (pbeg, &pend,2,200);
- if (!remove (&pbeg, &pend, 5)) cout << "не найден";
- Node *pv = pbeg;
- while (pv) {
- cout << pv ->d << ' ';
- pv = pv->next;
- }
- system ("Pause");
- return 0;
- }
- Node *first (int d) {
- Node *pv = new Node;
- pv->d = d; pv-> next = 0; pv-> prev = 0;
- return pv;
- }
- void add (Node **pend, int d)
- {
- Node *pv = new Node;
- pv->d=d; pv->next=0; pv->prev=*pend;
- (*pend)->next=pv;
- *pend=pv;
- }
- Node *find(Node *const pbeg, int d) {
- Node *pv = pbeg;
- while (pv) {
- if (pv->d == d) break;
- pv=pv->next;
- }
- return pv;
- }
- bool remove (Node **pbeg, Node **pend, int key) {
- if (Node *pkey = find (*pbeg, key)) {
- if (pkey == *pbeg) {
- *pbeg = (*pbeg) -> next;
- (*pbeg)->prev=0;
- } else if (pkey == *pend) {
- *pend = (*pend) -> prev;
- (*pend)->next=0;
- } else {
- (pkey -> prev) -> next = pkey -> next;
- (pkey -> next) -> prev = pkey -> prev;
- }
- delete pkey;
- return true;
- }
- return false;
- }
- Node * insert (Node * const pbeg, Node **pend, int key, int d) {
- if (Node *pkey = find (pbeg, key)) {
- Node *pv=new Node;
- pv->d = d;
- pv->next=pkey->next;
- pv->prev=pkey;
- pkey->next=pv;
- if(pkey != *pend) (pv->next)->prev=pv;
- else *pend = pv;
- return pv;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement