#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
struct Node* head = NULL;
void insertAtStart(int value) {
struct Node
* newNode
= (struct Node
*)malloc
(sizeof(struct Node
)); newNode->data = value;
head = newNode;
printf("Inserted %d at the start.\n", value
); }
void insertAtEnd(int value) {
struct Node
* newNode
= (struct Node
*)malloc
(sizeof(struct Node
)); newNode->data = value;
if (head == NULL) {
head = newNode;
} else {
while (current
->next != NULL) { }
}
printf("Inserted %d at the end.\n", value
); }
void insertAtPosition(int value, int position) {
if (position < 1) {
printf("Invalid position. Please enter a position greater than or equal to 1.\n"); return;
}
if (position == 1) {
insertAtStart(value);
} else {
struct Node
* newNode
= (struct Node
*)malloc
(sizeof(struct Node
)); newNode->data = value;
int currentPosition = 1;
while (currentPosition
< position
- 1 && current != NULL) { currentPosition++;
}
printf("Invalid position. The list has fewer elements.\n"); } else {
printf("Inserted %d at position %d.\n", value
, position
); }
}
}
void deleteFromStart() {
if (head == NULL) {
printf("List is empty. Cannot delete from start.\n"); return;
}
struct Node* temp = head;
free(temp);
printf("Deleted from the start.\n"); }
void deleteFromEnd() {
if (head == NULL) {
printf("List is empty. Cannot delete from end.\n"); return;
}
if (head
->next == NULL) { free(head);
head = NULL;
printf("Deleted from the end.\n"); return;
}
while (current
->next->next != NULL) { }
printf("Deleted from the end.\n"); }
void deleteFromPosition(int position) {
if (position < 1 || head == NULL) {
printf("Invalid position or list is empty. Cannot delete from position %d.\n", position
); return;
}
if (position == 1) {
deleteFromStart();
} else {
int currentPosition = 1;
while (currentPosition
< position
- 1 && current
->next != NULL) { currentPosition++;
}
if (current
->next == NULL) { printf("Invalid position. The list has fewer elements.\n"); } else {
struct Node
* temp
= current
->next; free(temp);
printf("Deleted from position %d.\n", position
); }
}
}
void display() {
return;
}
printf("%d -> ", current
->data); }
}
int main() {
int choice, value, position;
while (1) {
printf("\nSingly Linked List Operations:\n"); printf("1. Insert at Start\n"); printf("3. Insert at Position\n"); printf("4. Delete from Start\n"); printf("5. Delete from End\n"); printf("6. Delete from Position\n");
printf("Enter your choice: "); scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter value to insert at the start: "); scanf("%d", &value);
insertAtStart(value);
break;
case 2:
printf("Enter value to insert at the end: "); scanf("%d", &value);
insertAtEnd(value);
break;
case 3:
printf("Enter value to insert: "); scanf("%d", &value);
scanf("%d", &position);
insertAtPosition(value, position);
break;
case 4:
deleteFromStart();
break;
case 5:
deleteFromEnd();
break;
case 6:
printf("Enter position to delete: "); scanf("%d", &position);
deleteFromPosition(position);
break;
case 7:
display();
break;
case 8:
default:
printf("Invalid choice. Please try again.\n"); }
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IE5vZGUqIG5leHQ7Cn07CgpzdHJ1Y3QgTm9kZSogaGVhZCA9IE5VTEw7IAoKdm9pZCBpbnNlcnRBdFN0YXJ0KGludCB2YWx1ZSkgewogICAgc3RydWN0IE5vZGUqIG5ld05vZGUgPSAoc3RydWN0IE5vZGUqKW1hbGxvYyhzaXplb2Yoc3RydWN0IE5vZGUpKTsKICAgIG5ld05vZGUtPmRhdGEgPSB2YWx1ZTsKICAgIG5ld05vZGUtPm5leHQgPSBoZWFkOwogICAgaGVhZCA9IG5ld05vZGU7CiAgICBwcmludGYoIkluc2VydGVkICVkIGF0IHRoZSBzdGFydC5cbiIsIHZhbHVlKTsKfQoKdm9pZCBpbnNlcnRBdEVuZChpbnQgdmFsdWUpIHsKICAgIHN0cnVjdCBOb2RlKiBuZXdOb2RlID0gKHN0cnVjdCBOb2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBOb2RlKSk7CiAgICBuZXdOb2RlLT5kYXRhID0gdmFsdWU7CiAgICBuZXdOb2RlLT5uZXh0ID0gTlVMTDsKCiAgICBpZiAoaGVhZCA9PSBOVUxMKSB7CiAgICAgICAgaGVhZCA9IG5ld05vZGU7CiAgICB9IGVsc2UgewogICAgICAgIHN0cnVjdCBOb2RlKiBjdXJyZW50ID0gaGVhZDsKICAgICAgICB3aGlsZSAoY3VycmVudC0+bmV4dCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgIH0KICAgICAgICBjdXJyZW50LT5uZXh0ID0gbmV3Tm9kZTsKICAgIH0KICAgIHByaW50ZigiSW5zZXJ0ZWQgJWQgYXQgdGhlIGVuZC5cbiIsIHZhbHVlKTsKfQoKdm9pZCBpbnNlcnRBdFBvc2l0aW9uKGludCB2YWx1ZSwgaW50IHBvc2l0aW9uKSB7CiAgICBpZiAocG9zaXRpb24gPCAxKSB7CiAgICAgICAgcHJpbnRmKCJJbnZhbGlkIHBvc2l0aW9uLiBQbGVhc2UgZW50ZXIgYSBwb3NpdGlvbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS5cbiIpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAocG9zaXRpb24gPT0gMSkgewogICAgICAgIGluc2VydEF0U3RhcnQodmFsdWUpOwogICAgfSBlbHNlIHsKICAgICAgICBzdHJ1Y3QgTm9kZSogbmV3Tm9kZSA9IChzdHJ1Y3QgTm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3QgTm9kZSkpOwogICAgICAgIG5ld05vZGUtPmRhdGEgPSB2YWx1ZTsKCSAgICBzdHJ1Y3QgTm9kZSogY3VycmVudCA9IGhlYWQ7CiAgICAgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDE7CgogICAgICAgIHdoaWxlIChjdXJyZW50UG9zaXRpb24gPCBwb3NpdGlvbiAtIDEgJiYgY3VycmVudCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgICAgICBjdXJyZW50UG9zaXRpb24rKzsKICAgICAgICB9CgogICAgICAgIGlmIChjdXJyZW50ID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJJbnZhbGlkIHBvc2l0aW9uLiBUaGUgbGlzdCBoYXMgZmV3ZXIgZWxlbWVudHMuXG4iKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuZXdOb2RlLT5uZXh0ID0gY3VycmVudC0+bmV4dDsKICAgICAgICAgICAgY3VycmVudC0+bmV4dCA9IG5ld05vZGU7CiAgICAgICAgICAgIHByaW50ZigiSW5zZXJ0ZWQgJWQgYXQgcG9zaXRpb24gJWQuXG4iLCB2YWx1ZSwgcG9zaXRpb24pOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBkZWxldGVGcm9tU3RhcnQoKSB7CiAgICBpZiAoaGVhZCA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCJMaXN0IGlzIGVtcHR5LiBDYW5ub3QgZGVsZXRlIGZyb20gc3RhcnQuXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBzdHJ1Y3QgTm9kZSogdGVtcCA9IGhlYWQ7CiAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIGZyZWUodGVtcCk7CiAgICBwcmludGYoIkRlbGV0ZWQgZnJvbSB0aGUgc3RhcnQuXG4iKTsKfQoKdm9pZCBkZWxldGVGcm9tRW5kKCkgewogICAgaWYgKGhlYWQgPT0gTlVMTCkgewogICAgICAgIHByaW50ZigiTGlzdCBpcyBlbXB0eS4gQ2Fubm90IGRlbGV0ZSBmcm9tIGVuZC5cbiIpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaGVhZC0+bmV4dCA9PSBOVUxMKSB7CiAgICAgICAgZnJlZShoZWFkKTsKICAgICAgICBoZWFkID0gTlVMTDsKICAgICAgICBwcmludGYoIkRlbGV0ZWQgZnJvbSB0aGUgZW5kLlxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN0cnVjdCBOb2RlKiBjdXJyZW50ID0gaGVhZDsKICAgIHdoaWxlIChjdXJyZW50LT5uZXh0LT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dDsKICAgIH0KCiAgICBmcmVlKGN1cnJlbnQtPm5leHQpOwogICAgY3VycmVudC0+bmV4dCA9IE5VTEw7CiAgICBwcmludGYoIkRlbGV0ZWQgZnJvbSB0aGUgZW5kLlxuIik7Cn0KCnZvaWQgZGVsZXRlRnJvbVBvc2l0aW9uKGludCBwb3NpdGlvbikgewogICAgaWYgKHBvc2l0aW9uIDwgMSB8fCBoZWFkID09IE5VTEwpIHsKICAgICAgICBwcmludGYoIkludmFsaWQgcG9zaXRpb24gb3IgbGlzdCBpcyBlbXB0eS4gQ2Fubm90IGRlbGV0ZSBmcm9tIHBvc2l0aW9uICVkLlxuIiwgcG9zaXRpb24pOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAocG9zaXRpb24gPT0gMSkgewogICAgICAgIGRlbGV0ZUZyb21TdGFydCgpOwogICAgfSBlbHNlIHsKICAgICAgICBzdHJ1Y3QgTm9kZSogY3VycmVudCA9IGhlYWQ7CiAgICAgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDE7CgogICAgICAgIHdoaWxlIChjdXJyZW50UG9zaXRpb24gPCBwb3NpdGlvbiAtIDEgJiYgY3VycmVudC0+bmV4dCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgICAgICAgICBjdXJyZW50UG9zaXRpb24rKzsKICAgICAgICB9CgogICAgICAgIGlmIChjdXJyZW50LT5uZXh0ID09IE5VTEwpIHsKICAgICAgICAgICAgcHJpbnRmKCJJbnZhbGlkIHBvc2l0aW9uLiBUaGUgbGlzdCBoYXMgZmV3ZXIgZWxlbWVudHMuXG4iKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdHJ1Y3QgTm9kZSogdGVtcCA9IGN1cnJlbnQtPm5leHQ7CiAgICAgICAgICAgIGN1cnJlbnQtPm5leHQgPSBjdXJyZW50LT5uZXh0LT5uZXh0OwogICAgICAgICAgICBmcmVlKHRlbXApOwogICAgICAgICAgICBwcmludGYoIkRlbGV0ZWQgZnJvbSBwb3NpdGlvbiAlZC5cbiIsIHBvc2l0aW9uKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgZGlzcGxheSgpIHsKICAgIHN0cnVjdCBOb2RlKiBjdXJyZW50ID0gaGVhZDsKICAgIGlmIChjdXJyZW50ID09IE5VTEwpIHsKICAgICAgICBwcmludGYoIkxpc3QgaXMgZW1wdHkuXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBwcmludGYoIkxpbmtlZCBMaXN0OiAiKTsKICAgIHdoaWxlIChjdXJyZW50ICE9IE5VTEwpIHsKICAgICAgICBwcmludGYoIiVkIC0+ICIsIGN1cnJlbnQtPmRhdGEpOwogICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgfQogICAgcHJpbnRmKCJOVUxMXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgY2hvaWNlLCB2YWx1ZSwgcG9zaXRpb247CgogICAgd2hpbGUgKDEpIHsKICAgICAgICBwcmludGYoIlxuU2luZ2x5IExpbmtlZCBMaXN0IE9wZXJhdGlvbnM6XG4iKTsKICAgICAgICBwcmludGYoIjEuIEluc2VydCBhdCBTdGFydFxuIik7CiAgICAgICAgcHJpbnRmKCIyLiBJbnNlcnQgYXQgRW5kXG4iKTsKICAgICAgICBwcmludGYoIjMuIEluc2VydCBhdCBQb3NpdGlvblxuIik7CiAgICAgICAgcHJpbnRmKCI0LiBEZWxldGUgZnJvbSBTdGFydFxuIik7CiAgICAgICAgcHJpbnRmKCI1LiBEZWxldGUgZnJvbSBFbmRcbiIpOwogICAgICAgIHByaW50ZigiNi4gRGVsZXRlIGZyb20gUG9zaXRpb25cbiIpOwogICAgICAgIHByaW50ZigiNy4gRGlzcGxheVxuIik7CiAgICAgICAgcHJpbnRmKCI4LiBFeGl0XG4iKTsKCiAgICAgICAgcHJpbnRmKCJFbnRlciB5b3VyIGNob2ljZTogIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJmNob2ljZSk7CgogICAgICAgIHN3aXRjaCAoY2hvaWNlKSB7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIHByaW50ZigiRW50ZXIgdmFsdWUgdG8gaW5zZXJ0IGF0IHRoZSBzdGFydDogIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCAmdmFsdWUpOwogICAgICAgICAgICAgICAgaW5zZXJ0QXRTdGFydCh2YWx1ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgcHJpbnRmKCJFbnRlciB2YWx1ZSB0byBpbnNlcnQgYXQgdGhlIGVuZDogIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCAmdmFsdWUpOwogICAgICAgICAgICAgICAgaW5zZXJ0QXRFbmQodmFsdWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIHByaW50ZigiRW50ZXIgdmFsdWUgdG8gaW5zZXJ0OiAiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlZCIsICZ2YWx1ZSk7CiAgICAgICAgICAgICAgICBwcmludGYoIkVudGVyIHBvc2l0aW9uOiAiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlZCIsICZwb3NpdGlvbik7CiAgICAgICAgICAgICAgICBpbnNlcnRBdFBvc2l0aW9uKHZhbHVlLCBwb3NpdGlvbik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgZGVsZXRlRnJvbVN0YXJ0KCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgZGVsZXRlRnJvbUVuZCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgIHByaW50ZigiRW50ZXIgcG9zaXRpb24gdG8gZGVsZXRlOiAiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlZCIsICZwb3NpdGlvbik7CiAgICAgICAgICAgICAgICBkZWxldGVGcm9tUG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgIGRpc3BsYXkoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICBleGl0KDApOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGNob2ljZS4gUGxlYXNlIHRyeSBhZ2Fpbi5cbiIpOwogICAgICAgIH0KICAgIH0KfQo=
Jmx0Oz9waHAKCXByaW50ZigmcXVvdDsmbHQ7YiBzdHlsZT0mcXVvdDtjb2xvcjpibGFjaztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmNjYmcXVvdDsmZ3Q7Y2Y4MGQ3Mzc4ODMwNjlkNGJmNTk4NjdiOWM5ZjMyMTYmbHQ7L2ImZ3Q7IAorIAombHQ7YiBzdHlsZT0mcXVvdDtjb2xvcjpibGFjaztiYWNrZ3JvdW5kLWNvbG9yOiNhMGZmZmYmcXVvdDsmZ3Q7NzJiNGM0NjU1MWY0NWQzNTAzOWEyMWVmOGQ3MjNkZDYmbHQ7L2ImZ3Q7IAorIAombHQ7YiBzdHlsZT0mcXVvdDtjb2xvcjpibGFjaztiYWNrZ3JvdW5kLWNvbG9yOiM5OWZmOTkmcXVvdDsmZ3Q7MGQ0Zjc3MmVmYzRkODQwNjY2YTgyNGRhMTVmMzNjOGEmbHQ7L2ImZ3Q7JnF1b3Q7KTsKPyZndDs=
<?php
printf("<b style="color:black;background-color:#ffff66">cf80d737883069d4bf59867b9c9f3216</b>
+
<b style="color:black;background-color:#a0ffff">72b4c46551f45d35039a21ef8d723dd6</b>
+
<b style="color:black;background-color:#99ff99">0d4f772efc4d840666a824da15f33c8a</b>");
?>
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
struct Node* head = NULL;
void insertAtStart(int value) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = value;
newNode->next = head;
head = newNode;
printf("Inserted %d at the start.\n", value);
}
void insertAtEnd(int value) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = value;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
struct Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
printf("Inserted %d at the end.\n", value);
}
void insertAtPosition(int value, int position) {
if (position < 1) {
printf("Invalid position. Please enter a position greater than or equal to 1.\n");
return;
}
if (position == 1) {
insertAtStart(value);
} else {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = value;
struct Node* current = head;
int currentPosition = 1;
while (currentPosition < position - 1 && current != NULL) {
current = current->next;
currentPosition++;
}
if (current == NULL) {
printf("Invalid position. The list has fewer elements.\n");
} else {
newNode->next = current->next;
current->next = newNode;
printf("Inserted %d at position %d.\n", value, position);
}
}
}
void deleteFromStart() {
if (head == NULL) {
printf("List is empty. Cannot delete from start.\n");
return;
}
struct Node* temp = head;
head = head->next;
free(temp);
printf("Deleted from the start.\n");
}
void deleteFromEnd() {
if (head == NULL) {
printf("List is empty. Cannot delete from end.\n");
return;
}
if (head->next == NULL) {
free(head);
head = NULL;
printf("Deleted from the end.\n");
return;
}
struct Node* current = head;
while (current->next->next != NULL) {
current = current->next;
}
free(current->next);
current->next = NULL;
printf("Deleted from the end.\n");
}
void deleteFromPosition(int position) {
if (position < 1 || head == NULL) {
printf("Invalid position or list is empty. Cannot delete from position %d.\n", position);
return;
}
if (position == 1) {
deleteFromStart();
} else {
struct Node* current = head;
int currentPosition = 1;
while (currentPosition < position - 1 && current->next != NULL) {
current = current->next;
currentPosition++;
}
if (current->next == NULL) {
printf("Invalid position. The list has fewer elements.\n");
} else {
struct Node* temp = current->next;
current->next = current->next->next;
free(temp);
printf("Deleted from position %d.\n", position);
}
}
}
void display() {
struct Node* current = head;
if (current == NULL) {
printf("List is empty.\n");
return;
}
printf("Linked List: ");
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");
}
int main() {
int choice, value, position;
while (1) {
printf("\nSingly Linked List Operations:\n");
printf("1. Insert at Start\n");
printf("2. Insert at End\n");
printf("3. Insert at Position\n");
printf("4. Delete from Start\n");
printf("5. Delete from End\n");
printf("6. Delete from Position\n");
printf("7. Display\n");
printf("8. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter value to insert at the start: ");
scanf("%d", &value);
insertAtStart(value);
break;
case 2:
printf("Enter value to insert at the end: ");
scanf("%d", &value);
insertAtEnd(value);
break;
case 3:
printf("Enter value to insert: ");
scanf("%d", &value);
printf("Enter position: ");
scanf("%d", &position);
insertAtPosition(value, position);
break;
case 4:
deleteFromStart();
break;
case 5:
deleteFromEnd();
break;
case 6:
printf("Enter position to delete: ");
scanf("%d", &position);
deleteFromPosition(position);
break;
case 7:
display();
break;
case 8:
exit(0);
default:
printf("Invalid choice. Please try again.\n");
}
}
}