Add IndexOf method to SinglyLinkedList

This commit is contained in:
Mahadev 2017-12-26 19:19:18 +05:30
parent f246a54621
commit e709a4b5ea
2 changed files with 39 additions and 0 deletions

View File

@ -154,6 +154,18 @@ func (list *List) Values() []interface{} {
return values
}
//IndexOf returns index of provided element
func (list *List) IndexOf(value interface{}) int{
if list.size == 0 {
return -1
}
for index, element := range list.Values() {
if element == value {
return index
}
}
return -1
}
// Empty returns true if list does not contain any elements.
func (list *List) Empty() bool {
return list.size == 0

View File

@ -133,6 +133,33 @@ func TestListValues(t *testing.T) {
}
}
func TestListIndexOf(t *testing.T) {
list := New()
expectedIndex := -1
if index := list.IndexOf("a"); index != expectedIndex{
t.Errorf("Got %v expected %v",index,expectedIndex)
}
list.Add("a")
list.Add("b", "c")
expectedIndex = 0
if index := list.IndexOf("a"); index != expectedIndex{
t.Errorf("Got %v expected %v",index,expectedIndex)
}
expectedIndex = 1
if index := list.IndexOf("b"); index != expectedIndex{
t.Errorf("Got %v expected %v",index,expectedIndex)
}
expectedIndex = 2
if index := list.IndexOf("c"); index != expectedIndex{
t.Errorf("Got %v expected %v",index,expectedIndex)
}
}
func TestListInsert(t *testing.T) {
list := New()
list.Insert(0, "b", "c")