1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

A question in searching a link in a circular list

  1. Mar 18, 2008 #1
    i was told to build a method for which if
    we find the asked value in one of the links we
    return the previous link
    i have built a method that supposedly does it
    the problem is that i was told that this code is wrong because
    we need to check the "this" link seperatly from the FOR loop
    why is that???
    Code (Text):

    public static  Link find(Object x)
    Link p;//current object
    Link t;//previous object
    for (p=Link;(p!=this);p=p.next, t=p)
    {
    if (p.data.equals(x)){
     return t;
     
    }
    return null;
    }
     
     
    Last edited: Mar 18, 2008
  2. jcsd
  3. Mar 18, 2008 #2

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    That isn't valid c++ code.
    - 'this' is doesn't exist in a static member function.
    - There is no left operand for the && operator in the for loop.
     
  4. Mar 18, 2008 #3
    its JAVA not C++
     
  5. Mar 18, 2008 #4

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    The same comments apples to Java. From http://www.owlnet.rice.edu/~tchjava/2002/notes/current/node53.html,
    "&&" is a binary infix conditional operator in Java. Binary: "&&" needs two operands on which to operate. Infix: the two operands go to the left and right of the operator. Conditional: If the left operand is false so is the expression.
     
  6. Mar 18, 2008 #5
    i removed &&


    i changed the post

    the link doesnt talk about linked list


    can you answer my original post??
     
  7. Mar 18, 2008 #6

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    The link talks about using the parameter this in a static method. You cannot do that. Why did you use the word "static" doing at the start of the code? You cannot use this in a static method. You have other errors as well, such as "p=Link". "Link" is a class; I suspect you meant "p=this" instead. Of course, if you do start with "p=this", the code will never enter the loop as written.
     
  8. Mar 18, 2008 #7

    jambaugh

    User Avatar
    Science Advisor
    Gold Member

    One problem that I see is:

    If your first link happens to be the one where you find the value then the t-pointer to the previous link will not yet be assigned.
     
  9. Mar 18, 2008 #8
    ok i ment p=this
    and suppose that its not static
    so what know
    i dont understand this comment
    "if you do start with "p=this", the code will never enter the loop as written"
    its starts with this then in the for loop i say that p=p.next
    so it goes further
    and checks "p" again which represents the next link
    i was told to start the for loop from p=this.next
    and to check "this" object seperatly
    i dont know why???
     
  10. Mar 18, 2008 #9

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    It is a good idea to trace through code by hand. Doing that with this chunk of code,
    Code (Text):
    for (p=this; p != this; p= p.next) {
      < loop body >
    }
    The variable p is initially set to this. The termination condition is then checked. p is equal to this, so the body of the loop is never entered. Starting with p.next initially prevents this problem, but creates a new one. The body of the loop is never performed with this itself. That is easily rectified in this case as the body of this particular loop is a one-liner.
     
  11. Mar 18, 2008 #10
    ahhhhhhhhhh ok thanks
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: A question in searching a link in a circular list
  1. Linked list (Replies: 12)

Loading...