Re: LinkedList Pointer (REPOST - diff version)




r.devaraj@xxxxxxxxx wrote:
> Some typo and confusion in previous post
> (http://groups.google.com/group/comp.lang.c/browse_thread/thread/5e1f7437701250c4/c83fdc9a2d49e9ac?hl=en#c83fdc9a2d49e9ac)
> made it difficult for me to fetch correct answers.
> Here's the original problem.
>
> Consider Linked List
>
> struct node{
> int data;
> struct node * next;
> }list;
>
>
> No problem until you are dealing with a pointer variable(list).
> there, you can access
> >> memory where it is pointing to.
> >> own address of pointer variable.
>
> but think in case &(list->next)
> >>you can just access the target.
> >> no clue about (atlest for me, now) what pointer comes to picture
> or where it is stored.,

It contains the address of list-> next.

that is address of the field next,inside the structure pointed by list.

>
>
> Description:
>
> Consider foll. routines.
>
> a function to add a node in the list
>
> void Push(struct node** headRef, int newData);
> Given an int and a reference to the head pointer (i.e. a struct
> node** pointer to the head pointer), add a new node at the head of the
> list with the standard 3-step-link-in: create the new node, set its
> .next to point to the current head, and finally change the head to
> point to the new node.
>
>
> and a routine using it is,
>
>
> void BasicsCaller() {
> struct node* head;
> int len;
> head = BuildOneTwoThree(); // Start with {1, 2, 3}
> Push(&head, 13); // Push 13 on the front,
> // yielding {13, 1, 2, 3}
> // (The '&' is because head is
> //passed
> // as a reference pointer.)
> Push(&(head->next), 42); // Push 42 into the second
> //position
> // yielding {13, 42, 1, 2, 3}
> // Demonstrates a use of '&' on
> // the .next field of a node.
> // (See technique #2 below.)
> }
>
>
>
> First call for push(&head,13) is obvious and works fine.
>
>
> Now this is the single question:
> Just explain what happens in the call Push(&(head->next), 42)
> what is passed to Push and what it is done in push.

It will pass the address of next in the structure pointed by head.
Push will allocate a node,put 42 inside that.and store address of that
node in this address.

So after returning from push,head->next will contain address of newly
allocated node.

>
>
> if you couldn't get me completely,
> http://cslibrary.stanford.edu/105/LinkedListProblems.pdf
>
> Thanks.
> Deva.

.



Relevant Pages

  • LinkedList Pointer (REPOST - diff version)
    ... struct node * next; ... No problem until you are dealing with a pointer variable. ... void Push(struct node** headRef, int newData); ... Given an int and a reference to the head pointer (i.e. a struct ...
    (comp.lang.c)
  • LinkedList Pointer (REPOST - diff version)
    ... struct node * next; ... No problem until you are dealing with a pointer variable. ... void Push(struct node** headRef, int newData); ... Given an int and a reference to the head pointer (i.e. a struct ...
    (comp.lang.c)
  • Re: linked lists
    ... >> why do you have a pointer to a pointer to a node p?? ... > Because I need to modify the original pointer 'head'. ... struct node *next; ... struct node *newnode; ...
    (comp.lang.c)
  • Re: ((node*)&head)->next
    ... >Given that next is the first field in struct node, ... >and head is a pointer to node, ... each node also contains a pointer of that same type. ...
    (comp.lang.c)
  • Re: Still more linked list magic :-)
    ... if pointer deallocation succeeded ... TYPE(my_pointer), POINTER:: current! ... Check if the head of the list is allocated, ... print *, 'before calling dealloc_list:' ...
    (comp.lang.fortran)