#include <iostream>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
using namespace std;
struct node {
int data;
node* link;
};
node* head = NULL;
void clear();
bool isEmpty();
void insertFront(int value);
void insertLast(int value);
void display();
int sumlink();
int nodeCount();
void delFront();
void delLast();
int main()
{
insertFront(10);
insertFront(20);
insertFront(30);
display();
delLast();
display();
cout << "sum = " << sumlink() << endl;
delFront();
display();
}
void clear() {
head = NULL;
}
bool isEmpty() {
if (head == NULL)
return true;
else
return false;
}
void insertFront(int value) {
node* N = new node;
N->data = value;
N->link = NULL;
if (head == NULL)
head = N;
else {
N->link = head;
head = N;
}
}
void insertLast(int value) {
node* newnode = new node;
newnode->data = value;
newnode->link = NULL;
node* temp = head;
while (temp->link != NULL) {
temp = temp->link;
}
temp->link = newnode;
}
void display() {
cout << "The data is : \n";
if (head == NULL)
cout << "Linked LIst is Empty\n";
else {
node* temp = head;
while (temp != NULL) {
cout << temp->data << endl;
temp = temp->link;
}
}
}
int sumlink() {
int sum = 0;
node* temp = head;
while (temp != NULL) {
sum += temp->data;
temp = temp->link;
}
return sum;
}
int nodeCount() {
int cnt = 0;
node* temp = head;
while (temp != NULL) {
cnt++;
temp = temp->link;
}
return cnt;
}
void delFront() {
if (head == NULL)
cout << "The list is underflow\n";
else {
node* temp = head;
cout << "The deleted item is :" << head->data << endl;
head = head->link;
delete temp;
}
}
void delLast() {
if (head == NULL)
cout << "The list is underflow\n";
else if (head->link == NULL) {
delete (head);
head = NULL;
}
else {
node* kk = head;
while (kk->link->link != NULL) {
kk = kk->link;
}
delete(kk->link);
kk->link = NULL;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlIHsKCWludCBkYXRhOwoJbm9kZSogbGluazsKfTsKCm5vZGUqIGhlYWQgPSBOVUxMOwoKdm9pZCBjbGVhcigpOwpib29sIGlzRW1wdHkoKTsKdm9pZCBpbnNlcnRGcm9udChpbnQgdmFsdWUpOwp2b2lkIGluc2VydExhc3QoaW50IHZhbHVlKTsKdm9pZCBkaXNwbGF5KCk7CmludCBzdW1saW5rKCk7CmludCBub2RlQ291bnQoKTsKdm9pZCBkZWxGcm9udCgpOwp2b2lkIGRlbExhc3QoKTsKCmludCBtYWluKCkKewoJaW5zZXJ0RnJvbnQoMTApOwoJaW5zZXJ0RnJvbnQoMjApOwoJaW5zZXJ0RnJvbnQoMzApOwoJZGlzcGxheSgpOwoJZGVsTGFzdCgpOwoJZGlzcGxheSgpOwoJY291dCA8PCAic3VtID0gIiA8PCBzdW1saW5rKCkgPDwgZW5kbDsKCWRlbEZyb250KCk7CglkaXNwbGF5KCk7Cn0KCnZvaWQgY2xlYXIoKSB7CgloZWFkID0gTlVMTDsKfQoKYm9vbCBpc0VtcHR5KCkgewoJaWYgKGhlYWQgPT0gTlVMTCkKCQlyZXR1cm4gdHJ1ZTsKCWVsc2UKCQlyZXR1cm4gZmFsc2U7Cn0KCnZvaWQgaW5zZXJ0RnJvbnQoaW50IHZhbHVlKSB7Cglub2RlKiBOID0gbmV3IG5vZGU7CglOLT5kYXRhID0gdmFsdWU7CglOLT5saW5rID0gTlVMTDsKCWlmIChoZWFkID09IE5VTEwpCgkJaGVhZCA9IE47CgllbHNlIHsKCQlOLT5saW5rID0gaGVhZDsKCQloZWFkID0gTjsKCX0KfQoKdm9pZCBpbnNlcnRMYXN0KGludCB2YWx1ZSkgewoJbm9kZSogbmV3bm9kZSA9IG5ldyBub2RlOwoJbmV3bm9kZS0+ZGF0YSA9IHZhbHVlOwoJbmV3bm9kZS0+bGluayA9IE5VTEw7Cglub2RlKiB0ZW1wID0gaGVhZDsKCXdoaWxlICh0ZW1wLT5saW5rICE9IE5VTEwpIHsKCQl0ZW1wID0gdGVtcC0+bGluazsKCX0KCXRlbXAtPmxpbmsgPSBuZXdub2RlOwp9Cgp2b2lkIGRpc3BsYXkoKSB7Cgljb3V0IDw8ICJUaGUgZGF0YSBpcyA6IFxuIjsKCWlmIChoZWFkID09IE5VTEwpCgkJY291dCA8PCAiTGlua2VkIExJc3QgaXMgRW1wdHlcbiI7CgllbHNlIHsKCQlub2RlKiB0ZW1wID0gaGVhZDsKCQl3aGlsZSAodGVtcCAhPSBOVUxMKSB7CgkJCWNvdXQgPDwgdGVtcC0+ZGF0YSA8PCBlbmRsOwoJCQl0ZW1wID0gdGVtcC0+bGluazsKCQl9Cgl9Cn0KCmludCBzdW1saW5rKCkgewoJaW50IHN1bSA9IDA7Cglub2RlKiB0ZW1wID0gaGVhZDsKCXdoaWxlICh0ZW1wICE9IE5VTEwpIHsKCQlzdW0gKz0gdGVtcC0+ZGF0YTsKCQl0ZW1wID0gdGVtcC0+bGluazsKCX0KCXJldHVybiBzdW07Cn0KCmludCBub2RlQ291bnQoKSB7CglpbnQgY250ID0gMDsKCW5vZGUqIHRlbXAgPSBoZWFkOwoJd2hpbGUgKHRlbXAgIT0gTlVMTCkgewoJCWNudCsrOwoJCXRlbXAgPSB0ZW1wLT5saW5rOwoJfQoJcmV0dXJuIGNudDsKfQoKdm9pZCBkZWxGcm9udCgpIHsKCWlmIChoZWFkID09IE5VTEwpCgkJY291dCA8PCAiVGhlIGxpc3QgaXMgdW5kZXJmbG93XG4iOwoJZWxzZSB7CgkJbm9kZSogdGVtcCA9IGhlYWQ7CgkJY291dCA8PCAiVGhlIGRlbGV0ZWQgaXRlbSBpcyA6IiA8PCBoZWFkLT5kYXRhIDw8IGVuZGw7CgkJaGVhZCA9IGhlYWQtPmxpbms7CgkJZGVsZXRlIHRlbXA7Cgl9Cn0KCnZvaWQgZGVsTGFzdCgpIHsKCWlmIChoZWFkID09IE5VTEwpCgkJY291dCA8PCAiVGhlIGxpc3QgaXMgdW5kZXJmbG93XG4iOwoJZWxzZSBpZiAoaGVhZC0+bGluayA9PSBOVUxMKSB7CgkJZGVsZXRlIChoZWFkKTsKCQloZWFkID0gTlVMTDsKCX0KCWVsc2UgewoJCW5vZGUqIGtrID0gaGVhZDsKCQl3aGlsZSAoa2stPmxpbmstPmxpbmsgIT0gTlVMTCkgewoJCQlrayA9IGtrLT5saW5rOwoJCX0KCQlkZWxldGUoa2stPmxpbmspOwoJCWtrLT5saW5rID0gTlVMTDsKCX0KCn0=