Help with linked list.


 
Thread Tools Search this Thread
Top Forums Programming Help with linked list.
# 1  
Old 02-26-2013
Help with linked list.

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

struct LinkedList
{
        int val;
        struct LinkedList *next;
}node; /*Creating a structure variable*/

typedef struct LinkedList Node;
Node *start = NULL;
int create(int i)
{
        Node *temp = NULL;
        if (start == NULL)
        {
                start = (Node*)malloc(sizeof(node)); /*creating space for start*/
                start->val = i;
                start->next=NULL;
                return 0;
        }
        else
                temp = start;
                while(temp != NULL) /*traversing to last node*/
                {
                        printf("Value in temp = %d\n", temp->val);
                        temp=temp->next;
                }
                temp = (Node*)malloc(sizeof(node));
                temp->val = i;
                start->next= temp; /*Start pointing to newly created node*/
                temp->next = NULL;
                return 0;
}

void display()
{
        Node *temp = NULL;
        printf("Displaying List\n");
        if (start == NULL)
                printf("List is Empty\n");
        else
        {
                temp = start;
                while(temp != NULL)
                {
                        printf("%d      ", temp->val);
                        temp = temp->next;
                }
        }
}

int main()
{
        int j =0;
        for(j; j <= 10; j++)
        {
                create(j);
        }
        display();
        return 0;
}

---------- Post updated at 01:05 PM ---------- Previous update was at 01:03 PM ----------

HI,
I am trying to write a program for single linked list. But the problem is the in the while loop in the below written program the value of the nodes created is not getting saved.
Like for example if I try to display the list..all I get is 0 10 Smilie
Pls help me understand this.
thnx in advance
Prince

Last edited by Corona688; 02-26-2013 at 05:47 PM..
# 2  
Old 02-26-2013
You link the 1st element to the newly created element, which then links to NULL.
So you always have the 1st and the latest element - the intermediate elements are lost.
# 3  
Old 02-26-2013
Thanks Germany,
You mean I should have done that last linking.
All what I want to do is to link the newly created element to NULL and link Start to the newly created element.
Please can you also tell me what could there be..instead of what I have written.
# 4  
Old 02-26-2013
A proposal (please always wrap in CODE tags!)
Code:
#include<stdio.h>
#include<stdlib.h>

struct LinkedList
{
int val;
struct LinkedList *next;
}node; /*Creating a structure variable*/

typedef struct LinkedList Node;
Node *start = NULL;
int create(int i)
{
Node *temp = start;
while(temp != NULL) /*traversing to last node*/
{
printf("Value in temp = %d\n", temp->val);
temp=temp->next;
}
temp = (Node*)malloc(sizeof(node));
temp->val = i;
temp->next = start; /* link this node to the start of the list */
start = temp; /* this node becomes the new start */
return 0;
}

void display()
{
Node *temp = NULL;
printf("Displaying List\n");
if (start == NULL)
printf("List is Empty\n");
else
{
temp = start;
while(temp != NULL)
{
printf("%d ", temp->val);
temp = temp->next;
}
}
}

int main()
{
int j =0;
for(j; j <= 10; j++)
{
create(j);
}
display();
return 0;
}

# 5  
Old 02-27-2013
Hey Germany,

Thanks for the reply. It really helped. But I was wondering if I do that in the code, it would certainly add the new nodes at the beginning. What If I want to add them at the end?

Thanks Again,
Prince
# 6  
Old 02-27-2013
Linking at the beginning is easier.
Linking at the end either requires traversing to the end of the list, then linking to it.
Or, more efficient, have an external end pointer in addition to the start pointer:
Code:
...
Node *start = NULL;
Node *end = NULL;

int create (int i) {
...
temp = (Node*)malloc(sizeof(node));
temp->val = i;
temp->next = NULL;
if ( start == NULL ) {
  start = temp; /* the first node becomes the start */
} else {
  end->next = temp; /* link last node to this node */
}
end = temp; /* update the end pointer */
...
}
...

This time we need an if clause, because the first element needs to be treated differently.

Last edited by MadeInGermany; 02-27-2013 at 02:02 PM.. Reason: Forgot to update the end pointer
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

How to reverse a linked list by traversing only once.?

Program to reverse a linked list by traversing only once. (1 Reply)
Discussion started by: VSSajjan
1 Replies

2. Programming

How to delete the last node in a linked list.?

How to delete the last node in a single linked list given only the pointer to last node ? Head node will not be given. (5 Replies)
Discussion started by: VSSajjan
5 Replies

3. UNIX for Advanced & Expert Users

Unix linked-list placement

Hi, I am programming in kernel, and I want to use a double linked list that holds infos that every process could access and modify THIS list. So, I suppose it is a 'global' variable since every process(thread) can reach it, I am wondering where to put it? by changing some of the kernel files? (1 Reply)
Discussion started by: louisTan
1 Replies

4. Programming

how to check if something exists in a struct linked list?

can someone provide an example of a struct linked list, where it has strings as its values, and then how do I check if a specific string (say called buffer) exists in the list of structs? i dont understand how to make a copy of it to check with this is what i have ... (0 Replies)
Discussion started by: omega666
0 Replies

5. Programming

How to check if something exists in linked list in C?

i have a linked list set up like typedef struct client_list { char *client_name; int client_socket_fd; struct client_list *next; } client; client *client_list=NULL; before adding to the list i check if it already exists, only if it does not then i add if (client_list==NULL... (1 Reply)
Discussion started by: omega666
1 Replies

6. Programming

Help with linked list in C

i have this code typedef struct client_list { char *client_name; struct client_list * next; int client_socket_fd; } client; client *current, *head; head = NULL; char *h="test"; add_client(current, h, head, &client_socket_fd); ... (24 Replies)
Discussion started by: omega666
24 Replies

7. Programming

I need C++ Code for single linked list

I need C++ Code for single linked list With operations as 1)insert at any position 2)delete any 3)change the data of any position (2 Replies)
Discussion started by: girija
2 Replies

8. Programming

shared memory with linked list??

is this possible, if so plz please share with me.. Correct English please, not Cyber-/Leetspeak (11 Replies)
Discussion started by: vijay_manpage
11 Replies

9. UNIX for Dummies Questions & Answers

List linked files

A perl script that displays the list of files which have multiple links..! ls -l shows number of links in a field. (0 Replies)
Discussion started by: aadi_uni
0 Replies

10. Programming

Reverse single linked list

Can any one help me in reversing the single linked list and at the same time i want to print the reversed links. (2 Replies)
Discussion started by: dhanamurthy
2 Replies
Login or Register to Ask a Question