Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab5

.txt
Скачиваний:
7
Добавлен:
15.06.2014
Размер:
1.66 Кб
Скачать
#include <stdio.h>
class List {
	class Node {
		public:
			int d; // Data
			Node *next; //Next node
			Node *prev; //Prev node
			Node(int dat = 0) {
				d = dat; next = 0; prev = 0;
			}
	};

	public:
		Node *pbeg, *pend;
		List(){pbeg = 0; pend = 0;}
		~List();
		Node * first(int d);
		void add(int d);
		void print_list();
		void print_list_back();
};

/*void List::add(int d) {
	Node *pv = new Node(d);
	if (pbeg == 0) pbeg = pend = pv;
	else {
		pv->prev = pend;
		pend->next = pv;
		pend = pv;
	}
}*/
void List::add(Node **pbeg, Node **pend, int d) {
	Node *pv = new Node;
	pv->d = d;
	Node * pt = *pbeg;
	while (pt) {
		if (d < pt->d) {
			pv->next = pt;
			if (pt == *pbeg) {
				pv->prev = 0;
				*pbeg = pv;
			}
			else {
				(pt->prev)->next = pv;
				pv->prev = pt->prev;
			}
			pt->prev = pv;
			return;
		}
		pt = pt->next;
	}
	pv->next = 0;
	pv->prev = *pend;
	(*pend)->next = pv;
	*pend = pv;
}


void List::print_list() {
	Node *pv = pbeg;
	printf("List:\n\n");
	while (pv) {
		printf("%d\t", pv->d);
		pv = pv->next;
	}
}

void List::print_list_back() {
	Node *pv = pend;
	printf("List back:\n\n");
	while (pv) {
		printf("%d\t", pv->d);
		pv = pv->prev;
	}
}

	List::~List() {
		if (pbeg != 0) {
			Node *pv = pbeg;
			while (pv) {
				pv = pv->next;
				delete pbeg;
				pbeg = pv;
			}
		}
}

int main() {
	List L;
	for (int i = 1; i<50; i += 5) L.add(i);
	for (int j = 1; j<20; j += 2) L.add(j);
	L.print_list();
	printf("---------------------------------------------------------------------------\n");
	L.print_list_back();

	getchar();
}
Соседние файлы в предмете Технология программирования