#include "Header.h"
Node *GetNode(int x){
Node *p = new Node;
if (p == NULL){
return NULL;
}
else {
p->Data = x;
p->pNext = NULL;
return p;
}
}
void Init(List &l){
l.pHead = l.pTail = NULL;
}
int main(){
List l;
int n;
cout << "ban muon nhap bao nhieu node? ";
cin >> n;
Input(l, n);
Output(l);
GiaiPhong(l);
return 0;
}
void AddHead(List &l, Node *p){
if (l.pHead == NULL){
l.pHead = l.pTail = p;
}
else{
p->pNext = l.pHead;
l.pHead = p;
}
}
void AddTail(List &l, Node *p){
if (l.pHead == NULL){
l.pHead = l.pTail = p;
}
else{
l.pTail->pNext = p;
l.pTail = p;
}
}
void RemoveHead(List &l){
Node *p = new Node;
Node *k = new Node;
for (Node*i = l.pHead; i; i = i->pNext){
if (p != NULL){
p = l.pHead;
k = p->pNext;
k = l.pHead;
delete p;
return;
}
}
if (p == NULL){
l.pHead = l.pTail = NULL;
}
}
void RemoveTail(List &l){
Node *p = new Node;
Node *g = new Node;
if (p != NULL){
p = l.pTail;
g->pNext = p;
g = l.pTail;
delete p;
return;
}
else{
l.pHead = l.pTail = NULL;
}
}
void Input(List &l, int n){
Init(l);
for (int i = 1; i <= n; i++){
int x;
scanf_s("&d", &x);
Node *p = GetNode(x);
AddTail(l, p);
}
}
void Output(List l){
for (Node *p = l.pHead; p!=NULL; p = p->pNext){
}
}
void GiaiPhong(List &l)
{
Node *p;
while (l.pHead != NULL)
{
p = l.pHead;
l.pHead = l.pHead->pNext;
delete p;
}
}
CiNpbmNsdWRlICJIZWFkZXIuaCIKTm9kZSAqR2V0Tm9kZShpbnQgeCl7CglOb2RlICpwID0gbmV3IE5vZGU7CglpZiAocCA9PSBOVUxMKXsKCQlyZXR1cm4gTlVMTDsKCX0KCWVsc2UgewoJCXAtPkRhdGEgPSB4OwoJCXAtPnBOZXh0ID0gTlVMTDsKCQlyZXR1cm4gcDsKCX0KfQp2b2lkIEluaXQoTGlzdCAmbCl7CglsLnBIZWFkID0gbC5wVGFpbCA9IE5VTEw7Cn0KCmludCBtYWluKCl7CglMaXN0IGw7CglpbnQgbjsKCWNvdXQgPDwgImJhbiBtdW9uIG5oYXAgYmFvIG5oaWV1IG5vZGU/ICI7CgljaW4gPj4gbjsKCUlucHV0KGwsIG4pOwoJT3V0cHV0KGwpOwoJR2lhaVBob25nKGwpOwoJc3lzdGVtKCJwYXVzZSIpOwoJcmV0dXJuIDA7Cn0Kdm9pZCBBZGRIZWFkKExpc3QgJmwsIE5vZGUgKnApewoJaWYgKGwucEhlYWQgPT0gTlVMTCl7CgkJbC5wSGVhZCA9IGwucFRhaWwgPSBwOwoJfQoJZWxzZXsKCQlwLT5wTmV4dCA9IGwucEhlYWQ7CgkJbC5wSGVhZCA9IHA7Cgl9Cn0KCnZvaWQgQWRkVGFpbChMaXN0ICZsLCBOb2RlICpwKXsKCWlmIChsLnBIZWFkID09IE5VTEwpewoJCWwucEhlYWQgPSBsLnBUYWlsID0gcDsKCX0KCWVsc2V7CgkJbC5wVGFpbC0+cE5leHQgPSBwOwoJCWwucFRhaWwgPSBwOwoJfQp9CnZvaWQgUmVtb3ZlSGVhZChMaXN0ICZsKXsKCU5vZGUgKnAgPSBuZXcgTm9kZTsKCU5vZGUgKmsgPSBuZXcgTm9kZTsKCWZvciAoTm9kZSppID0gbC5wSGVhZDsgaTsgaSA9IGktPnBOZXh0KXsKCQlpZiAocCAhPSBOVUxMKXsKCQkJcCA9IGwucEhlYWQ7CgkJCWsgPSBwLT5wTmV4dDsKCQkJayA9IGwucEhlYWQ7CgkJCWRlbGV0ZSBwOwoJCQlyZXR1cm47CgkJfQoJfQoJaWYgKHAgPT0gTlVMTCl7CgkJbC5wSGVhZCA9IGwucFRhaWwgPSBOVUxMOwoJfQp9CnZvaWQgUmVtb3ZlVGFpbChMaXN0ICZsKXsKCU5vZGUgKnAgPSBuZXcgTm9kZTsKCU5vZGUgKmcgPSBuZXcgTm9kZTsKCWlmIChwICE9IE5VTEwpewoJCXAgPSBsLnBUYWlsOwoJCWctPnBOZXh0ID0gcDsKCQlnID0gbC5wVGFpbDsKCQlkZWxldGUgcDsKCQlyZXR1cm47Cgl9CgllbHNlewoJCWwucEhlYWQgPSBsLnBUYWlsID0gTlVMTDsKCX0KfQp2b2lkIElucHV0KExpc3QgJmwsIGludCBuKXsKCUluaXQobCk7CQoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCQlpbnQgeDsKCQlwcmludGYoIk1vaSBuaGFwIGRhdGFcbiIpOwoJCXNjYW5mX3MoIiZkIiwgJngpOwoJCU5vZGUgKnAgPSBHZXROb2RlKHgpOwoJCUFkZFRhaWwobCwgcCk7Cgl9Cn0KCnZvaWQgT3V0cHV0KExpc3QgbCl7Cglmb3IgKE5vZGUgKnAgPSBsLnBIZWFkOyBwIT1OVUxMOyBwID0gcC0+cE5leHQpewoJCXByaW50ZigiJTVkIiwgcC0+RGF0YSk7Cgl9Cn0Kdm9pZCBHaWFpUGhvbmcoTGlzdCAmbCkKewoJTm9kZSAqcDsgCgl3aGlsZSAobC5wSGVhZCAhPSBOVUxMKQoJewoJCXAgPSBsLnBIZWFkOyAKCQlsLnBIZWFkID0gbC5wSGVhZC0+cE5leHQ7IAoJCWRlbGV0ZSBwOyAKCX0KfQ==