4a
#include
#include
struct Node {
int data;
struct Node* next;
};
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) return NULL;
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void insertEnd(struct Node** head, int data) {
struct Node* newNode = createNode(data);
if (newNode == NULL) return;
if (*head == NULL) {
*head = newNode;
return;
}
struct Node* last = *head;
while (last->next != NULL) {
last = last->next;
}
last->next = newNode;
}
void traverseReverse(struct Node* head) {
if (head == NULL) return;
traverseReverse(head->next);
printf("%d ", head->data);
}
void traverseList(struct Node* head) {
struct Node* current = head;
if (head == NULL) {
printf("List Empty.\n");
return;
}
printf("List: ");
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
struct Node* head = NULL;
insertEnd(&head, 10);
insertEnd(&head, 20);
insertEnd(&head, 30);
insertEnd(&head, 40);
traverseList(head);
printf("Reverse Traversal: ");
traverseReverse(head);
printf("\n");
return 0;
}
4b
#include
#include
struct Node {
int data;
struct Node* next;
};
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) return NULL;
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void insertEnd(struct Node** head, int data) {
struct Node* newNode = createNode(data);
if (newNode == NULL) return;
if (*head == NULL) {
*head = newNode;
return;
}
struct Node* last = *head;
while (last->next != NULL) {
last = last->next;
}
last->next = newNode;
}
void traverseList(struct Node* head, const char* name) {
struct Node* current = head;
printf("%s: ", name);
if (head == NULL) {
printf("Empty.\n");
return;
}
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");
}
void mergeLists(struct Node* head1, struct Node* head2) {
if (head1 == NULL) return;
if (head2 == NULL) return;
struct Node* current = head1;
while (current->next != NULL) {
current = current->next;
}
current->next = head2;
}
int main() {
struct Node* list1 = NULL;
struct Node* list2 = NULL;
insertEnd(&list1, 10);
insertEnd(&list1, 20);
insertEnd(&list2, 100);
insertEnd(&list2, 200);
insertEnd(&list2, 300);
traverseList(list1, "List 1");
traverseList(list2, "List 2");
mergeLists(list1, list2);
printf("\nAfter Merging:\n");
traverseList(list1, "Merged List");
return 0;
}
Sunday, 5 October 2025
Linked list 4
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment