Почему не работает метод insert?

 
0
 
.NET
ava
rehvi | 27.03.2013, 03:43
Помогите разобраться, что то не то с инсертом, а вроде работал и если не сложно remove помогите реализовать!!! 
Kommentare (10)
ava
rehvi | 27.03.2013, 12:38 #
Цитата (rehvi @ 27.3.2013,  02:43)
Помогите разобраться, что то не то с инсертом, а вроде работал и если не сложно remove помогите реализовать!!!

Народ помогите, срочно нужно!!!
ava
azesmcar | 27.03.2013, 12:41 #
Код покажи и скажи что конкретно не работает. Качать исходники никому неохота. Так ты ответа не дождешься.
ava
rehvi | 27.03.2013, 12:56 #

using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication50 {
    class Program {
        static void Main(string[] args) {
            



            LinkedList l = new LinkedList();
            l.Add("BMW");
            l.Add("Audi");
            l.Add("Opel");
            l.Add("Mazda");
            l.Insert(0, "C#");


            for(int i = 0; i < l.Count; i++) {
                Console.WriteLine(l[i]); 
            }
            Console.ReadKey();
        }
    }
}


using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication50 {
    public class LinkedListItem {
        public object Value { get; set; }
        public LinkedListItem Left { get; set; }
        public LinkedListItem Right { get; set; }
    }

    public class LinkedList : IList {
        private LinkedListItem _firstItem;
        private LinkedListItem _lastItem;
        private int _count;

        #region IList Members

        public int Add(object value) {
            LinkedListItem item = new LinkedListItem() { Value = value };
            if(_lastItem != null) {
                _lastItem.Right = item;
                item.Left = _lastItem;
                _lastItem = item;
            } else {
                _firstItem = _lastItem = item;
            }
            return _count++;
        }

        public void Clear() {
            _firstItem = _lastItem = null;
            _count = 0;
        }

        public bool Contains(object value) {
            throw new NotImplementedException();
        }

        public int IndexOf(object value) {
            throw new NotImplementedException();
        }

        public void Insert(int index, object value) {
            LinkedListItem newItem = new LinkedListItem() { Value = value };
            LinkedListItem item = _firstItem;
            for(int i = 0; i < index - 1; i++) {
                item = item.Right;
            }
            newItem.Right = item;
            item.Left = newItem;
            newItem.Left = item;

        }

        public bool IsFixedSize {
            get { throw new NotImplementedException(); }
        }

        public bool IsReadOnly {
            get { throw new NotImplementedException(); }
        }

        public void Remove(object value) {
            throw new NotImplementedException();
        }

        public void RemoveAt(int index) {
            throw new NotImplementedException();
        }

        public object this[int index] {
            get {
                //LinkedListItem item = _firstItem;
                //for(int i = 0; i < index; i++) {
                //    item = item.Right;
                //}
                //return item.Value;
                return GetItemByIndex(index).Value;
            }
            set {
                //LinkedListItem item = _firstItem;
                //for(int i = 0; i < index; i++) {
                //    item = item.Right;
                //}
                //item.Value = value;
                GetItemByIndex(index).Value = value;
            }
        }

        private LinkedListItem GetItemByIndex(int index) {
            LinkedListItem item = _firstItem;
            for(int i = 0; i < index; i++) {
                item = item.Right;
            }
            return item;
        }

        #endregion

        #region ICollection Members

        public void CopyTo(Array array, int index) {
            throw new NotImplementedException();
        }

        public int Count {
            get { return _count; }
        }

        public bool IsSynchronized {
            get { throw new NotImplementedException(); }
        }

        public object SyncRoot {
            get { throw new NotImplementedException(); }
        }

        #endregion

        #region IEnumerable Members

        public IEnumerator GetEnumerator() {
            throw new NotImplementedException();
        }

        #endregion
    }
}
ava
IBS | 27.03.2013, 13:46 #
Цитата (rehvi @  27.3.2013,  12:56 findReferencedText)
public bool Contains(object value) {
    throw new NotImplementedException();
    }

Так он не реализован!
ava
rehvi | 27.03.2013, 13:56 #
Цитата (IBS @ 27.3.2013,  13:46)
Цитата



Не работает метод contains 




Цитата (rehvi @  27.3.2013,  12:56 \"findReferencedText\")
public bool Contains(object value) {
    throw new NotImplementedException();
   }


Странно, должен работать!

ой я перепутал, insert ек работает!"
ava
IBS | 27.03.2013, 14:27 #
Цитата (rehvi @  27.3.2013,  12:56 findReferencedText)

    newItem.Right = item;
    item.Left = newItem;
    newItem.Left = item;



newItem.Right = item;
newItem.Left = item.Left;
item.Left.Right = newItem;
item.Left = newItem;

Походу как-то так должно быть. Не тестил
ava
rehvi | 27.03.2013, 14:36 #
Цитата (IBS @ 27.3.2013,  14:27)
Цитата (rehvi @  27.3.2013,  12:56 \\"findReferencedText\\")

    newItem.Right = item;
    item.Left = newItem;
    newItem.Left = item;






newItem.Right = item;

newItem.Left = item.Left;

item.Left.Right = newItem;

item.Left = newItem;



Походу как-то так должно быть. Не тестил

Ошибку выдает вот здесь: item.Left.Right = newItem;
ava
IBS | 27.03.2013, 18:24 #
Цитата (rehvi @  27.3.2013,  14:36 findReferencedText)
Ошибку выдает вот здесь: item.Left.Right = newItem; 


Это был примерный код. Если элемент первый, то left==null и будет ошибка
Отлаживать кто будет?!
ava
rehvi | 28.03.2013, 23:46 #
Цитата (IBS @ 27.3.2013,  18:24)
Цитата (rehvi @  27.3.2013,  14:36 \\"findReferencedText\\")
Ошибку выдает вот здесь: item.Left.Right = newItem; 




Это был примерный код. Если элемент первый, то left==null и будет ошибка

Отлаживать кто будет?!

Есть идеи как исправить?
ava
IBS | 29.03.2013, 15:09 #
 smile  smile  smile 
ну понапихай проверок на null
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  azesmcar   IBS   rehvi
advanced
Absenden