Linked List implementation in C

DeepikaNS's Avatar, Join Date: Apr 2010
Newbie Member
Hello Guys,
I have found many source codes to implement linked list. But all are inserting or deleting the node values after user's choice. I dont want that. Insertion should happen dynamically.
I have a client program running on another system. I fetch the data from that system through my server program.As and when i receive the data, I shd insert them into my linked list.
Kindly help me dng this.

Thanks in advance.
Deepika
0
micsom's Avatar, Join Date: Oct 2008
Go4Expert Member
u need to design the system accordingly...

like keeping a provision for function pointer in your server program, as and when you receive data in server program, call this function ,which can have access to the LL,along with the data ..
0
DeepikaNS's Avatar, Join Date: Apr 2010
Newbie Member
//////////////////////////////
CISM_CASM_RECV_REVERSAL_ORDER_ID_01234560000000000 10000000001000250123000000000010000000001963378995 6387452
CISM_CASM_RECV_REVERSAL_ORDER_ID_01234560000000000 10000000001000250123000000000010000000001963378995 6387452
CISM_CASM_RECV_REVERSAL_ORDER_ID_01234560000000000 10000000001000250123000000000010000000001963378995 6387452
CISM_CASM_RECV_REVERSAL_ORDER_ID_01234560000000000 10000000001000250123000000000010000000001963378995 6387452
//////////////////////////
this is the value in my buffer which has to be inserted to the linked list.the whole contents come in a single buffer. but i should insert each line in a different node in the linked list. How can I do it?
This is my code for insertion.
Code:
 
  1. void insertion(char buff[1024])
  2. {
  3. new=(N*)malloc(sizeof(N));
  4. new->info=buff;
  5. printf("contents of buffer %s\n",buff);
  6. new->link=NULL;
  7. printf("value is %s\n",new->info);
  8. if(front==NULL)
  9. {
  10. front = new;
  11. rear = new;
  12. }
  13. else
  14. rear->link=new;
  15. rear=new;
  16. }
0
tech_aks's Avatar, Join Date: Apr 2010
Light Poster
here is d implementation of linked list in c





Basic linked list example .. interactive

#include <stdio.h>
#include <stdlib.h>

struct NODE {
int number;
struct NODE *next;
};

int search_value(struct NODE *llist, int num);
void append_node(struct NODE *llist, int num);
void display_list(struct NODE *llist);
void delete_node(struct NODE *llist, int num);

int main(void) {
int num = 0;
int input = 1;
int retval = 0;
struct NODE *llist;

llist = (struct NODE *)malloc(sizeof(struct NODE));
llist->number = 0;
llist->next = NULL;

while(input != 0) {
printf("\n-- Menu Selection --\n");
printf("0) Quit\n");
printf("1) Insert\n");
printf("2) Delete\n");
printf("3) Search\n");
printf("4) Display\n");
scanf("%d", &input);

switch(input) {
case 0:
default:
printf("Goodbye ...\n");
input = 0;
break;
case 1:
printf("Your choice: `Insertion'\n");
printf("Enter the value which should be inserted: ");
scanf("%d", &num);
append_node(llist, num);
break;
case 2:
printf("Your choice: `Deletion'\n");
printf("Enter the value which should be deleted: ");
scanf("%d", &num);
delete_node(llist, num);
break;
case 3:
printf("Your choice: `Search'\n");
printf("Enter the value you want to find: ");
scanf("%d", &num);
if((retval = search_value(llist, num)) == -1)
printf("Value `%d' not found\n", num);
else
printf("Value `%d' located at position `%d'\n", num, retval);
break;
case 4:
printf("You choice: `Display'\n");
display_list(llist);
break;
} /* switch */
} /* while */

free(llist);
return(0);
}

void display_list(struct NODE *llist) {
while(llist->next != NULL) {
printf("%d ", llist->number);
llist = llist->next;
}

printf("%d", llist->number);
}

void append_node(struct NODE *llist, int num) {
while(llist->next != NULL)
llist = llist->next;

llist->next = (struct NODE *)malloc(sizeof(struct NODE));
llist->next->number = num;
llist->next->next = NULL;
}

void delete_node(struct NODE *llist, int num) {
struct NODE *temp;
temp = (struct NODE *)malloc(sizeof(struct NODE));

if(llist->number == num) {
/* remove the node */
temp = llist->next;
free(llist);
llist = temp;
} else {
while(llist->next->number != num)
llist = llist->next;

temp = llist->next->next;
free(llist->next);
llist->next = temp;
}
}

int search_value(struct NODE *llist, int num) {
int retval = -1;
int i = 1;

while(llist->next != NULL) {
if(llist->next->number == num)
return i;
else
i++;

llist = llist->next;
}

return retval;
}
0
DeepikaNS's Avatar, Join Date: Apr 2010
Newbie Member
Hi,
Thanks for the code. But i don't want it to be interactive. It should happen dynamically on button click. On each button click, I get 1 line of data which has to be inserted into new node. How do i do it.
0
tech_aks's Avatar, Join Date: Apr 2010
Light Poster
will u plz let me knw the exact query of urs ...from scratch....thnks