#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct sllist
{
int data;
struct sllist * next;
}
sllnode;
// initially creating the first node of the Singly Linked List
void create( sllnode * head, int elem)
{
head -> data = elem;
head -> next = NULL;
}
// inserting a node
void insert( sllnode * head, int elem, int position )
{
if ( head == NULL )
{
}
// this overrides the very first node if already created through create function
if ( position == 0 )
{
head -> data = elem;
head -> next = NULL;
}
else
{
for ( int i = 0 ; i < position - 1 ; ++ i )
{
head = head -> next;
}
sllnode
* new_node
= malloc ( sizeof ( sllnode
) ) ; new_node -> data = elem;
new_node -> next = NULL;
head -> next = new_node; // this is working here, unline the previous program I have shared. I am not using a pointer to pointer here. But it still works unline previous program.
}
}
// print the entire linked list
void display( sllnode * head)
{
sllnode * temp = head;
if ( head == NULL )
{
}
while ( temp != NULL )
{
printf ( "%d \n " , temp
-> data
) ; temp = temp -> next;
}
}
// main function
int main( void )
{
sllnode
* head
= malloc ( sizeof ( sllnode
) ) ; create( head, 23 ) ;
insert( head, 13 , 0 ) ;
insert( head, 15 , 1 ) ;
insert( head, 45 , 2 ) ;
display( head) ;
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICAgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICAgICAKICAgIHR5cGVkZWYgc3RydWN0IHNsbGlzdAogICAgewogICAgICAgIGludCBkYXRhOwogICAgICAgIHN0cnVjdCBzbGxpc3QgKm5leHQ7CiAgICB9CiAgICBzbGxub2RlOwogICAgIAogICAgLy8gaW5pdGlhbGx5IGNyZWF0aW5nIHRoZSBmaXJzdCBub2RlIG9mIHRoZSBTaW5nbHkgTGlua2VkIExpc3QKICAgIHZvaWQgY3JlYXRlKHNsbG5vZGUgKmhlYWQsIGludCBlbGVtKQogICAgewogICAgICAgIGhlYWQgLT4gZGF0YSA9IGVsZW07CiAgICAgICAgaGVhZCAtPiBuZXh0ID0gTlVMTDsKICAgIH0KICAgICAKICAgIC8vIGluc2VydGluZyBhIG5vZGUKICAgIHZvaWQgaW5zZXJ0KCBzbGxub2RlICpoZWFkLCBpbnQgZWxlbSwgaW50IHBvc2l0aW9uICkKICAgIHsKICAgICAgICBpZiAoIGhlYWQgPT0gTlVMTCApCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIk5VTEwgcmV0dXJuZWQgXG4iKTsKICAgICAgICAgICAgZXhpdCgwKTsKICAgICAgICB9CiAgICAgICAgLy8gdGhpcyBvdmVycmlkZXMgdGhlIHZlcnkgZmlyc3Qgbm9kZSBpZiBhbHJlYWR5IGNyZWF0ZWQgdGhyb3VnaCBjcmVhdGUgZnVuY3Rpb24KICAgICAgICBpZiggcG9zaXRpb24gPT0gMCApCiAgICAgICAgewogICAgICAgICAgICBoZWFkIC0+IGRhdGEgPSBlbGVtOwogICAgICAgICAgICBoZWFkIC0+IG5leHQgPSBOVUxMOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBwb3NpdGlvbiAtIDE7ICsraSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGhlYWQgPSBoZWFkIC0+IG5leHQ7CiAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgc2xsbm9kZSAqbmV3X25vZGUgPSBtYWxsb2MoIHNpemVvZihzbGxub2RlKSApOwogICAgICAgICAgICBuZXdfbm9kZSAtPiBkYXRhID0gZWxlbTsKICAgICAgICAgICAgbmV3X25vZGUgLT4gbmV4dCA9IE5VTEw7CiAgICAgCiAgICAgICAgICAgIGhlYWQgLT4gbmV4dCA9IG5ld19ub2RlOyAvLyB0aGlzIGlzIHdvcmtpbmcgaGVyZSwgdW5saW5lIHRoZSBwcmV2aW91cyBwcm9ncmFtIEkgaGF2ZSBzaGFyZWQuIEkgYW0gbm90IHVzaW5nIGEgcG9pbnRlciB0byBwb2ludGVyIGhlcmUuIEJ1dCBpdCBzdGlsbCB3b3JrcyB1bmxpbmUgcHJldmlvdXMgcHJvZ3JhbS4KICAgICAgICB9CiAgICB9CiAgICAgCiAgICAvLyBwcmludCB0aGUgZW50aXJlIGxpbmtlZCBsaXN0CiAgICB2b2lkIGRpc3BsYXkoc2xsbm9kZSAqaGVhZCkKICAgIHsKICAgICAgICBzbGxub2RlICp0ZW1wID0gaGVhZDsKICAgICAgICBpZiAoIGhlYWQgPT0gTlVMTCApCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIk5VTEwgcmV0dXJuZWRcbiIpOwogICAgICAgICAgICBleGl0KDApOwogICAgICAgIH0KICAgICAKICAgICAgICB3aGlsZSggdGVtcCAhPSBOVUxMICkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJWQgXG4iLCB0ZW1wIC0+IGRhdGEpOwogICAgICAgICAgICB0ZW1wID0gdGVtcCAtPiBuZXh0OwogICAgICAgIH0KICAgIH0KICAgICAKICAgICAKICAgIC8vIG1haW4gZnVuY3Rpb24KICAgIGludCBtYWluKHZvaWQpCiAgICB7CiAgICAgICAgc2xsbm9kZSAqaGVhZCA9IG1hbGxvYyggc2l6ZW9mKHNsbG5vZGUpICk7CiAgICAgICAgY3JlYXRlKGhlYWQsMjMpOwogICAgICAgIGluc2VydChoZWFkLCAxMywgMCk7CiAgICAgICAgaW5zZXJ0KGhlYWQsIDE1LCAxKTsKICAgICAgICBpbnNlcnQoaGVhZCwgNDUsIDIpOwogICAgICAgIGRpc3BsYXkoaGVhZCk7CiAgICB9Cg==