| | |
Remove node not working in code
Please support our Java advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Oct 2008
Posts: 8
Reputation:
Solved Threads: 0
hi my remove node is not working....can someone help me correct it
•
•
•
•
// Polynomial.java
public class Polynomial
{
private int degree;
private Node head;
public static Polynomial addPolys(Polynomial poly1, Polynomial poly2)
{
Polynomial polyRes = new Polynomial();
int power = (poly1.degree > poly2.degree) ? poly1.degree : poly2.degree;
while (power >= 0)
{
Node n1 = poly1.head;
while (n1 != null)
{
if (n1.power == power)
break;
n1 = n1.next;
}
Node n2 = poly2.head;
while (n2 != null)
{
if (n2.power == power)
break;
n2 = n2.next;
}
if ((n1 != null) && (n2 != null))
polyRes.addNode(n1.coeff + n2.coeff, n1.power);
else if (n1 != null)
polyRes.addNode(n1.coeff, n1.power);
else if (n2 != null)
polyRes.addNode(n2.coeff, n2.power);
power--;
}
return polyRes;
}
public void addNode(int coeff, int power)
{
if (head == null) // start the list
{
head = new Node(coeff, power, null);
degree = power;
}
else
{
Node n = head;
Node last = null;
while (n != null)
{
if (power > n.power) // insert in list
{
if (last == null)
head = new Node(coeff, power, n);
else
last.next = new Node(coeff, power, n);
degree = power;
break;
}
last = n;
n = n.next;
}
if (n == null) // append to list
{
last.next = new Node(coeff, power, null);
}
}
}
//loop though the nodes until we got to the desired index - 1 and keep the reference of the node as A (A is the node right before the node we want to remove)
public void removeNode(int indexnumber)
{
Node n = head;
int i = 0;
while (i < indexnumber - 1){
n = n.next;
if(n.next == null)
//throw exception
++i;
}
Node A = n;
//(if we encounter a node with the next node pointing to null, thow an exception)
Node B = A.next; //B is the node we want to remove
Node C = B.next; //C is the node right after the node we want to remove
A.next = C;
B.next = null;
}
public String toString()
{
StringBuffer strBuf = new StringBuffer();
Node n = head;
boolean first = true;
while (n != null)
{
int absCoef = n.coeff;
if (!first)
{
if (n.coeff >= 0)
strBuf.append(" + ");
else
{
absCoef = -absCoef;
strBuf.append(" - ");
}
}
strBuf.append(absCoef).append("x^^").append(n.power);
first = false;
n = n.next;
}
return strBuf.toString();
}
public class Node
{
public int coeff;
public int power;
public Node next;
public Node(int coeff, int power, Node next)
{
this.coeff = coeff;
this.power = power;
this.next = next;
}
}
}
Please post an SSCCE so that it is easier for us to help you. You're posting a lot of extraneous code if all you need help with is removing a node from a linked-list.
•
•
Join Date: Oct 2008
Posts: 8
Reputation:
Solved Threads: 0
I have a problem with this remove node code
•
•
•
•
//loop though the nodes until we got to the desired index - 1 and keep the reference of the node as A (A is the node right before the node we want to remove)
public void removeNode(int indexnumber)
{
Node n = head;
int i = 0;
while (i < indexnumber - 1){
n = n.next;
if(n.next == null)
//throw exception
++i;
}
Node A = n;
//(if we encounter a node with the next node pointing to null, thow an exception)
Node B = A.next; //B is the node we want to remove
Node C = B.next; //C is the node right after the node we want to remove
A.next = C;
B.next = null;
}
How is it not working? What errors are you getting if any? Also, you're going to have unexpected behavior in that "if" statement in your loop.
These two code snippets are the same:
Notice how the comment was not considered to be the body of the "if" statement.
You can fix it by surrounding the body of the "if" statement with brackets or putting a semi-colon after the statement.
Also, I would recommend using a "for" loop. It's more compact and you would've gotten a compile-time error on your "if" statement—rather than it silently ignoring the error—had you used one.
I still haven't looked at the logic in your method because you still haven't explained what's wrong with it and you haven't shown any interest in solving the problem beyond asking someone to do it for you.
These two code snippets are the same:
Java Syntax (Toggle Plain Text)
// Yours: int i = 0; while (i < indexnumber - 1){ n = n.next; if(n.next == null) //throw exception ++i; }
Java Syntax (Toggle Plain Text)
// Same as: int i = 0; while (i < indexnumber - 1) { n = n.next; if (n.next == null) ++i; }
You can fix it by surrounding the body of the "if" statement with brackets or putting a semi-colon after the statement.
Java Syntax (Toggle Plain Text)
int i = 0; while (i < indexnumber - 1) { n = n.next; if (n.next == null) { //throw exception } ++i; }
Also, I would recommend using a "for" loop. It's more compact and you would've gotten a compile-time error on your "if" statement—rather than it silently ignoring the error—had you used one.
Java Syntax (Toggle Plain Text)
for (int i = 0; i < indexnumber - 1; i++) { n = n.next; if (n.next == null) { // throw exception } }
I still haven't looked at the logic in your method because you still haven't explained what's wrong with it and you haven't shown any interest in solving the problem beyond asking someone to do it for you.
Last edited by destin; Nov 3rd, 2008 at 4:27 pm.
•
•
Join Date: Oct 2008
Posts: 8
Reputation:
Solved Threads: 0
•
•
•
•
Right. But what does happen? Is it removing the wrong index? Is an exception being thrown? Is nothing happening? Show some interest and some willingness to think.
•
•
•
•
Exception in thread "main" java.lang.NullPointerException
at Polynomial.removeNode(Polynomial.java:88)
at PolyTest.main(PolyTest.java:16)
•
•
•
•
//loop though the nodes until we got to the desired index - 1 and keep the reference of the node as A (A is the node right before the node we want to remove)
public void removeNode(int indexnumber)
{
Node n = head;
for (int i =0; i < indexnumber -1; i++){
n = n.next;
if (n.next == null){
//throw
}
}
Node A = n;
//(if we encounter a node with the next node pointing to null, thow an exception)
Node B = A.next; //B is the node we want to remove
Node C = B.next; //C is the node right after the node we want to remove
A.next = C;
B.next = null;
}
•
•
•
•
Sir i am new to java so please be patient with me. I get this error
Java Syntax (Toggle Plain Text)
Exception in thread "main" java.lang.NullPointerException at Polynomial.removeNode(Polynomial.java:88) at PolyTest.main(PolyTest.java:16)
Show us that you're thinking and attempting on your own to solve the problem and you will receive a decent answer.
Last edited by destin; Nov 4th, 2008 at 12:35 pm.
![]() |
Similar Threads
- Installing software on Linux: packages (*nix Software)
- deleting a random node from a singly linked list (C++)
- Tree view Problem...Plz help (VB.NET)
- Tree View Problem (VB.NET)
- Linked List (C++)
- LinkedList Search (Java)
- Pythonwin/import/class-related problem (Python)
- Sorting Not In Order (C)
- another merge sort question (C++)
- Fast data storage (C++)
Other Threads in the Java Forum
- Previous Thread: Java lang exception thrown
- Next Thread: I need help please anyone...appreciated
Views: 640 | Replies: 9
| Thread Tools | Search this Thread |
Tag cloud for Java
3d @param affinetransform android api apple applet application arc arguments array arrays automation binary bluetooth byte chat class classes click client code color compare component corrupted database detection draw eclipse error event exception file fractal game givemetehcodez graphics gui guitesting helpwithhomework html ide image input integer j2me java java.xls javaprojects jmf jni jpanel julia keytool keyword linux list loop map method methods mobile netbeans newbie number object oracle pong print problem producer program programming project projectideas read recursion reflection replaysolutions rim scanner screen server set size sms socket sort sql string swing terminal test threads time transfer tree web windows





