Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by minhkhanh ( 5 years ago )
#include<iostream>
using namespace std;


//khai bao cau truc 1 node//
struct node {
	int data;
	struct node *pNext;//con tro lien ket cac node voi nhau//
};

//khai bao cau truc danh sach lien ket don//
struct list {
	node *pHead;//con tro de quan li danh sach lien ket don//
	node *pTail;
};

//khoi tao danh sach lien ket don//
void Init(list &l) {
	l.pHead = l.pTail = NULL;

}


//tao mot node moi//
node* Getnode(int DATA){
	node* p = new node;//cap phat vung nho cho NODE p//
	if (p == NULL) {
		return NULL;
	}
	p->data = DATA;// dua data vao trong node//
	p->pNext = NULL;//khai bao node nay chua lien ket voi node nao ca. nen con tro nay la NULL//
	return p;//tra ve node vua khoi tao//
}


//them node p vao dau, p vao cuoi danh sach//
void addHead(list &l,node *p) {
	if (l.pHead == NULL) {
		l.pHead = l.pTail = p;
	}
	else {
		p->pNext = l.pHead; //dung con tro cua node p tro toi dau danh sach pHead//
		l.pHead = p;       //cap nhat lai dau danh sach//
	}
}

void addTail(list& l, node* p) {
	if (l.pHead == NULL) {
		l.pHead = l.pTail = p;
	}

	else {
		l.pTail->pNext = p;//pTail tro next toi p
		l.pTail = p;//cap nhat pTail chinh la p//

	}
}




void input(list &l) {
	int n;
	cout << "\nnhap vao so luong phan tu trong danh sach";
	cin >> n;
	for (int i = 1; i <=n; i++) {
		int data;
		cout << "\nnhap vao data:";
		cin >> data;
		//dong goi data vao node//
		node* p = Getnode(data);//khoi tao 1 node//
		addHead(l, p);//them node p vao dau danh sach//
	}
}


void output(list l) {
	for (node* p = l.pHead; p != NULL; p = p->pNext) {
		cout << p->data<<"     ";
	}

}

void giaiphong(list& l) {
	node* p;
	while (l.pHead != NULL) {
		p = l.pHead;
		l.pHead = l.pHead->pNext;
		delete p;
	}
}

int tinhtong(list l) {
	int tong = 0;
	for (node* p = l.pHead; p != NULL; p = p->pNext) {
		tong += p->data;
	}
	return tong;
}

void lietkesochan(list l) {
	for (node* p = l.pHead; p != NULL; p=p->pNext) {
		if (p->data % 2 == 0) {
			cout << p->data<<"  ";
		}
	}
}

void hoanvi(int & x, int &y) {
	int temp = x;
	x = y;
	y = temp;
}

bool lonhon(int a, int b) {
	return a > b;
}
bool nhohon(int a, int b) {
	return a < b;
}


void sapxepdanhsach(list& l, bool(*sosanh)(int,int)) {
	for (node* p = l.pHead; p != NULL; p = p->pNext) {
		for (node* q = p->pNext; q != NULL; q = q->pNext) {
			if ((sosanh)(p->data, q->data) == true){
			      hoanvi(p->data, q->data);
			}
		}
	}
}

int timMinMax(list l, bool(*sosanh)(int, int)) {
	int m = l.pHead->data;
	for (node* p = l.pHead; p != NULL; p = p->pNext) {
		for (node* q = p->pNext; q != NULL; q = q->pNext) {
			if ((sosanh)(p->data, q->data) != true) {
				m= p->data;
			}
		}
	}
	return m;

}
//them node x vao sau node q trong danh sach//
void themvaosau(list& l, node* x, node* q) {
	for (node* p = l.pHead; p != NULL; p = p->pNext) {
		if (p->data == q->data) {
			node* g = p->pNext;//node g la node nam sau node x//
			x->pNext = g;//cho node x lien ket voi node g//
			p->pNext = x;//cho node p lien ket voi node x//
			return;
		}
	}
}


int main() {
	list l;//khai bao danh sach
	Init(l);
	input(l);
	output(l);
	int tong = tinhtong(l);
	cout << "\ntong cac phan tu cua danh sach S= " << tong;
	cout << "\ncac so chan trong danh sach: ";
	lietkesochan(l);
	cout << "\nsap xep tang: ";
	sapxepdanhsach(l, lonhon);
	output(l);
	cout<<"\n--------------------\n";
	cout << "\nsap xep giam: ";
	sapxepdanhsach(l, nhohon);
	output(l);
	int max=timMinMax(l, lonhon);
	cout << "\n--------------------\n";
	cout << "\nphan tu lon nhat trong danh sach: "<<max;
	int min=timMinMax(l, nhohon);
	cout << "\nphan tu nho nhat trong danh sach: "<<min;
	cout << "\n--------------------\n";
	cout << "\nthem node vao danh sach lien ket";
	node* q;
	node* x;
	int s, t;
	cout << "\nnhap vao node can them vao sau:";
	cin >> s;
	q = Getnode(s);
	cout << "\nnhap vao node muon them: ";
	cin >> t;
	x = Getnode(t);
	themvaosau(l, x, q);
	output(l);
	giaiphong(l);
	return 0;
}

 

Revise this Paste

Children: 117487
Your Name: Code Language: