#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
{
sllnode * temp = head;
for ( int i = 0 ; i < position - 1 ; ++ i )
{
temp = temp -> next;
}
sllnode
* new_node
= malloc ( sizeof ( sllnode
) ) ; new_node -> data = elem;
new_node -> next = NULL;
temp -> 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) ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCnR5cGVkZWYgc3RydWN0IHNsbGlzdAp7CiAgICBpbnQgZGF0YTsKICAgIHN0cnVjdCBzbGxpc3QgKm5leHQ7Cn0Kc2xsbm9kZTsKCi8vIGluaXRpYWxseSBjcmVhdGluZyB0aGUgZmlyc3Qgbm9kZSBvZiB0aGUgU2luZ2x5IExpbmtlZCBMaXN0CnZvaWQgY3JlYXRlKHNsbG5vZGUgKmhlYWQsIGludCBlbGVtKQp7CiAgICBoZWFkIC0+IGRhdGEgPSBlbGVtOwogICAgaGVhZCAtPiBuZXh0ID0gTlVMTDsKfQoKLy8gaW5zZXJ0aW5nIGEgbm9kZQp2b2lkIGluc2VydCggc2xsbm9kZSAqaGVhZCwgaW50IGVsZW0sIGludCBwb3NpdGlvbiApCnsKICAgIGlmICggaGVhZCA9PSBOVUxMICkKICAgIHsKICAgICAgICBwcmludGYoIk5VTEwgcmV0dXJuZWQgXG4iKTsKICAgICAgICBleGl0KDApOwogICAgfQogICAgLy8gdGhpcyBvdmVycmlkZXMgdGhlIHZlcnkgZmlyc3Qgbm9kZSBpZiBhbHJlYWR5IGNyZWF0ZWQgdGhyb3VnaCBjcmVhdGUgZnVuY3Rpb24KICAgIGlmKCBwb3NpdGlvbiA9PSAwICkKICAgIHsKICAgICAgICBoZWFkIC0+IGRhdGEgPSBlbGVtOwogICAgICAgIGhlYWQgLT4gbmV4dCA9IE5VTEw7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgc2xsbm9kZSAqdGVtcCA9IGhlYWQ7CiAgICAgICAgZm9yICggaW50IGkgPSAwOyBpIDwgcG9zaXRpb24gLSAxOyArK2kgKQogICAgICAgIHsKICAgICAgICAgICAgdGVtcCA9IHRlbXAgLT4gbmV4dDsKICAgICAgICB9CgogICAgICAgIHNsbG5vZGUgKm5ld19ub2RlID0gbWFsbG9jKCBzaXplb2Yoc2xsbm9kZSkgKTsKICAgICAgICBuZXdfbm9kZSAtPiBkYXRhID0gZWxlbTsKICAgICAgICBuZXdfbm9kZSAtPiBuZXh0ID0gTlVMTDsKCiAgICAgICAgdGVtcCAtPiBuZXh0ID0gbmV3X25vZGU7IC8vIHRoaXMgaXMgd29ya2luZyBoZXJlLCB1bmxpbmUgdGhlIHByZXZpb3VzIHByb2dyYW0gSSBoYXZlIHNoYXJlZC4gSSBhbSBub3QgdXNpbmcgYSBwb2ludGVyIHRvIHBvaW50ZXIgaGVyZS4gQnV0IGl0IHN0aWxsIHdvcmtzIHVubGluZSBwcmV2aW91cyBwcm9ncmFtLgogICAgfQp9CgovLyBwcmludCB0aGUgZW50aXJlIGxpbmtlZCBsaXN0CnZvaWQgZGlzcGxheShzbGxub2RlICpoZWFkKQp7CiAgICBzbGxub2RlICp0ZW1wID0gaGVhZDsKICAgIGlmICggaGVhZCA9PSBOVUxMICkKICAgIHsKICAgICAgICBwcmludGYoIk5VTEwgcmV0dXJuZWRcbiIpOwogICAgICAgIGV4aXQoMCk7CiAgICB9CgogICAgd2hpbGUoIHRlbXAgIT0gTlVMTCApCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZCBcbiIsIHRlbXAgLT4gZGF0YSk7CiAgICAgICAgdGVtcCA9IHRlbXAgLT4gbmV4dDsKICAgIH0KfQoKCi8vIG1haW4gZnVuY3Rpb24KaW50IG1haW4odm9pZCkKewogICAgc2xsbm9kZSAqaGVhZCA9IG1hbGxvYyggc2l6ZW9mKHNsbG5vZGUpICk7CiAgICBjcmVhdGUoaGVhZCwyMyk7CiAgICBpbnNlcnQoaGVhZCwgMTMsIDApOwogICAgaW5zZXJ0KGhlYWQsIDE1LCAxKTsKICAgIGluc2VydChoZWFkLCA0NSwgMik7CiAgICBkaXNwbGF5KGhlYWQpOwp9