Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Searching in Linked List

$
0
0
I'm writing a program that lets you add, delete, and search for people in an address book. I have to implement my own linked list instead of using the class in the java.util package. I am having A LOT of trouble on searching through the list. For my method searchPerson() in the Controller class, I have to search by last name. I managed to load the information from a text file (name, address, phone number, etc) into the list but I do not know how to search for their entry. I've tried to implement an iterator but I do not see how that would work. My attempt at searchPerson() is shown below. I didn't include the other classes because they were just get and set functions.

addressBookTypeController
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.FileOutputStream;

public class addressBookTypeController extends TNOrderedLinkedList{
    public TNOrderedLinkedList<extPersonType> linkedList = new TNOrderedLinkedList<extPersonType>();

    public void loadData(){
        Scanner inputStream = null;

    try{
        inputStream = new Scanner(new FileInputStream("Programming Assignment 1 Data.txt"));
    }catch(FileNotFoundException e){
        System.out.println("File Programming Assignment 1 Data.txt was not found");
        System.out.println("or could not be opened.");
        System.exit(0);
    }
        String[] temp = new String[8];
        int i = 0;
        String first = "", last = "", month = "", day = "", year = "", address = "", city = "", state = "", zip = "", number = "";
        
        while(inputStream.hasNext()){
            inputStream.useDelimiter("\n");
            temp[i] = inputStream.next();
            if(i == 0){
                String theName = temp[i];
                String[] split = theName.split(" ");
                first = split[0];
                last = split[1];
            }
            if(i == 1){
                String theDate = temp[i];
                String[] split = theDate.split(" ");
                month = split[0];
                day = split [1];
                year = split [2];
            }
            i++;
            if(i == 8){
                addressType tempAddr = new addressType(temp[2],temp[3],temp[4],temp[5]);
                dateType tempDob = new dateType(month,day,year);
                extPersonType extPerson = new extPersonType(first,last,tempAddr,tempDob,number,temp[7]);
                linkedList.addToStart(extPerson);
                i = 0;
            }
        }
    }
    public void searchPerson(String searchLastName){
        Scanner cin = new Scanner(System.in);
        String lastName;
        System.out.println("Enter last name: ");
        lastName = cin.next();
        linkedList.findData(lastName);
    }
}



extPersonType
public class extPersonType extends personType{
    addressType address;
    dateType dob;
    String phoneNumber;
    String personStatus;

    public extPersonType(String theFirst, String theLast, addressType newAddress, dateType newDob, String newPhoneNumber, String newPersonStatus){
        super(theFirst, theLast);
        address = newAddress;
        dob = newDob;
        phoneNumber = newPhoneNumber;
        personStatus = newPersonStatus;
    }
    public String toString(){
        return (this.getFirst() + " " + this.getLast() + "," + " " + address + " " + dob + " " + phoneNumber + " " + personStatus);
    }
}



OrderedLinkedList
public class TNOrderedLinkedList <extPersonType>{
        public Node<extPersonType> head;

        public TNOrderedLinkedList(){
            head = null;
        }
        public void addToStart(extPersonType itemData){
            head = new Node(itemData, head);
        }
        public boolean deleteHeadNode(){
            if(head != null){
                head = head.link;
                return true;
            }
            else
                return false;
        }
        public int size(){
            int count = 0;
            Node<extPersonType> position = head;
            while(position != null){
                count++;
                position = position.link;
            }
            return count;
        }
        public boolean contains(extPersonType item){
            return (find(item) != null);
        }
        private Node<extPersonType> find(extPersonType target){
            Node<extPersonType> position = head;
            extPersonType itemAtPosition;
            while(position != null){
                itemAtPosition = position.data;
                if(itemAtPosition.equals(target))
                    return position;
                position = position.link;
            }
            return null;
        }
        public extPersonType findData(extPersonType target){
            Node<extPersonType> result = find(target);
            if(result == null)
                return null;
            else
                return result.data;
        }
        public void outputList(){
            Node<extPersonType> position = head;
            while(position != null){
                System.out.println(position.data);
                position = position.link;
            }
        }
        public boolean isEmpty(){
            return (head == null);
        }
        public void clear(){
            head = null;
        }

        private class Node<extPersonType>{
            private extPersonType data;
            private Node<extPersonType> link;

            public Node(){
                data = null;
                link = null;
            }
            public Node(extPersonType newData, Node<extPersonType> linkValue){
                data = newData;
                link = linkValue;
            }
    }
}


Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>