From 126b9b5abc37429098cfcff60279bc843fcae218 Mon Sep 17 00:00:00 2001
From: suraj keshari <84243221+surajkeshari@users.noreply.github.com>
Date: Sat, 29 Oct 2022 09:57:13 +0530
Subject: [PATCH 1/2] Update readme.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8b13789..61ef03c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-
+HACKTOBERFEST 2K22
From eec80e089d336acc7c1993b577030013213d23ab Mon Sep 17 00:00:00 2001
From: suraj keshari <84243221+surajkeshari@users.noreply.github.com>
Date: Sat, 29 Oct 2022 10:02:08 +0530
Subject: [PATCH 2/2] added issue
---
...ode at the end of the singly linked list.c | 121 ++++++++++++++++++
1 file changed, 121 insertions(+)
create mode 100644 Program to insert the node at the end of the singly linked list.c
diff --git a/Program to insert the node at the end of the singly linked list.c b/Program to insert the node at the end of the singly linked list.c
new file mode 100644
index 0000000..7a01485
--- /dev/null
+++ b/Program to insert the node at the end of the singly linked list.c
@@ -0,0 +1,121 @@
+// A complete working C program to demonstrate all insertion methods
+// on Linked List
+#include
+#include
+
+// A linked list node
+struct Node
+{
+int data;
+struct Node *next;
+};
+
+/* Given a reference (pointer to pointer) to the head of a list and
+an int, inserts a new node on the front of the list. */
+void push(struct Node** head_ref, int new_data)
+{
+ /* 1. allocate node */
+ struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
+
+ /* 2. put in the data */
+ new_node->data = new_data;
+
+ /* 3. Make next of new node as head */
+ new_node->next = (*head_ref);
+
+ /* 4. move the head to point to the new node */
+ (*head_ref) = new_node;
+}
+
+/* Given a node prev_node, insert a new node after the given
+prev_node */
+void insertAfter(struct Node* prev_node, int new_data)
+{
+ /*1. check if the given prev_node is NULL */
+ if (prev_node == NULL)
+ {
+ printf("the given previous node cannot be NULL");
+ return;
+ }
+
+ /* 2. allocate new node */
+ struct Node* new_node =(struct Node*) malloc(sizeof(struct Node));
+
+ /* 3. put in the data */
+ new_node->data = new_data;
+
+ /* 4. Make next of new node as next of prev_node */
+ new_node->next = prev_node->next;
+
+ /* 5. move the next of prev_node as new_node */
+ prev_node->next = new_node;
+}
+
+/* Given a reference (pointer to pointer) to the head
+of a list and an int, appends a new node at the end */
+void append(struct Node** head_ref, int new_data)
+{
+ /* 1. allocate node */
+ struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
+
+ struct Node *last = *head_ref; /* used in step 5*/
+
+ /* 2. put in the data */
+ new_node->data = new_data;
+
+ /* 3. This new node is going to be the last node, so make next of
+ it as NULL*/
+ new_node->next = NULL;
+
+ /* 4. If the Linked List is empty, then make the new node as head */
+ if (*head_ref == NULL)
+ {
+ *head_ref = new_node;
+ return;
+ }
+
+ /* 5. Else traverse till the last node */
+ while (last->next != NULL)
+ last = last->next;
+
+ /* 6. Change the next of last node */
+ last->next = new_node;
+ return;
+}
+
+// This function prints contents of linked list starting from head
+void printList(struct Node *node)
+{
+while (node != NULL)
+{
+ printf(" %d ", node->data);
+ node = node->next;
+}
+}
+
+/* Driver program to test above functions*/
+int main()
+{
+/* Start with the empty list */
+struct Node* head = NULL;
+
+// Insert 6. So linked list becomes 6->NULL
+append(&head, 6);
+
+// Insert 7 at the beginning. So linked list becomes 7->6->NULL
+push(&head, 7);
+
+// Insert 1 at the beginning. So linked list becomes 1->7->6->NULL
+push(&head, 1);
+
+// Insert 4 at the end. So linked list becomes 1->7->6->4->NULL
+append(&head, 4);
+
+// Insert 8, after 7. So linked list becomes 1->7->8->6->4->NULL
+insertAfter(head->next, 8);
+
+printf("\n Created Linked list is: ");
+printList(head);
+
+return 0;
+}