Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
anbrodier
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 36
1

Однонаправленный не связанный (векторный способ размещения в памяти) список

21.02.2016, 13:53. Просмотров 399. Ответов 7
Метки нет (Все метки)

Необходимо написать строковый список(в названии) с удалением/добавлением элементов.
Не знаю правильно ли я делаю и как реализовать удаление.
Собственно мой код:

Работа со списком
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Arrays;
 
public class Level1
{
    private String[] list = {"1","2","-3","4","-5"};
    private int last;
 
    public Level1()
    {
        last = list.length - 1;
    }
 
   
public void delete()
    {
     
 
        
    }
 
       
       
public void pervui()
{
      
        if(list[0] != null)
            {
                System.out.print(" Pervui element: ");
                System.out.print(list[0] + " ");
            }
                
}
 
    public void Print()
    {
        System.out.print(" \n Ves spisok: ");
        for(int i = 0; i < list.length; i++)
        {
             
            if(list[i] != null)
            {
               
                System.out.print(list[i] + " ");
            }
        }
 
        System.out.println();
    }
 
   
}
Мейн
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
 
    public static void main(String[] args)
    {
        System.out.println("Список, целые числа");
 
        Level1 level1 = new Level1();
 
        level1.pervui();
        level1.Print();
 
    }
}
Заранее благодарю за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2016, 13:53
Ответы с готовыми решениями:

<object> как способ размещения апплетов на сайте...
Консорциум W3C настоятельно советует отказываться от тэга &lt;applet&gt; в пользу...

Запихать в связанный список
надо стек который проверяет правильность постановки скобок запихать в связанный...

Однонаправленный список без заголовка
Как произвести удаление первого элемента из однонаправленного списка без...

Однонаправленный связанный список
вот задание Однонаправленный связанный список Тип информационной части узла...

Однонаправленный связанный список, добавить удаление элемента
Помогите составить метод удаление элемента, если можно, то что его вводить с...

7
FatNinja
81 / 81 / 32
Регистрация: 17.02.2016
Сообщений: 226
21.02.2016, 13:59 2
Однонаправленный не связанный(векторный способ размещения в памяти ) список
Вы не можете точнее описать, что под этим подразумевается?
Что такое векторный способ размещения?
В java вроде бы нет такого, имхо.
Что такое не связанный список?
0
anbrodier
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 36
21.02.2016, 14:12  [ТС] 3
Цитата Сообщение от FatNinja Посмотреть сообщение
Вы не можете точнее описать, что под этим подразумевается?
Где элементы добавляются в одном направлении и вы правы, не несвязанный а односвязный ( я не правильно написал) Однонаправленный (односвязный) список, так будет вернее.(список строковый)
0
FatNinja
81 / 81 / 32
Регистрация: 17.02.2016
Сообщений: 226
21.02.2016, 15:32 4
Полагаю как-то так:
Node:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Node {
    
    private String text;
    private Node next;
 
    public Node() {
    }
 
    public Node(String text) {
        this.text = text;
    }
 
    // getters
    
    public String getText() {
        return text;
    }
 
    public Node getNext() {
        return next;
    }
    
    // setters
 
    public void setText(String text) {
        this.text = text;
    }
 
    public void setNext(Node next) {
        this.next = next;
    }
 
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Node other = (Node) obj;
        if (!Objects.equals(this.text, other.text)) {
            return false;
        }
//        if (!Objects.equals(this.next, other.next)) {
//            return false;
//        }
        return true;
    }
    
    @Override
    public String toString() {
        return "[" + text + "]";
    }
}

UnidirectList:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
class UnidirectList {
    
    private Node first = null;
 
    public UnidirectList() {
    }
 
    public UnidirectList(Node first) {
        this.first = first;
    }
    
    public Node getLastNode() {
        if (first == null) {
            return null;
        }
        Node current = first;
        while (current.getNext() != null) {
            current = current.getNext();
        }
        return current;
    }
    
    public void add(Node node) {
        if (first == null) {
            first = node;
        } else {
            Node last = getLastNode();
            last.setNext(node);
        }
    }
    
    public void remove(Node node) {
        if (first == null) {
            throw new IllegalArgumentException("List is empty");
        }
        Node previous = null;
        Node current = first;
        do {
            if (current.equals(node)) {
                if (previous == null) {
                    if (current.getNext() == null) {
                        first = null;
                        return;
                    } else {
                        first = current.getNext();
                    }
                } else {
                    if (current.getNext() == null) {
                        previous.setNext(null);
                        return;
                    } else {
                        previous.setNext(current.getNext());
                    }
                }
            } else {
                previous = current;
            } 
            current = current.getNext();
        } while (current != null);
    }
 
    @Override
    public String toString() {
        if (first != null) {
            StringBuilder result = new StringBuilder();
            Node current = first;
            do {
                result.append(current);
                current = current.getNext();
            } while (current != null);
            return result.toString();
        }
        return null;
    }
}

Runner:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Runner {
 
    public static void main(String[] args) {
        
        // Create 
        UnidirectList unidirectList = new UnidirectList();
        
        // Add
        unidirectList.add(new Node("Some1"));
        unidirectList.add(new Node("Some2"));
        unidirectList.add(new Node("Some3"));
 
        // Remove
        unidirectList.remove(new Node("Some1"));
        
        System.out.println(unidirectList);
    }
}
1
anbrodier
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 36
21.02.2016, 15:53  [ТС] 5
Цитата Сообщение от FatNinja Посмотреть сообщение
Полагаю как-то так:
Я право не знаю, код довольно сложный для меня, думаю надо вникнуть

Но вот код который принял преподователь, слегка по другому заданию(список не строковый, а целых чисел)
класс списка
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.company;
 
public class Level1
{
    private int[] items = {1,2,-3,4,-5};
    private int last;
 
    public Level1()
    {
        last = items.length - 1;
    }
 
    public boolean IsEmpty()
    {
        if(items[0] == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
 
    public int Delete(int position)
    {
        if(position < items.length)
        {
            int number = items[position];
 
            if (IsEmpty() == false) {
                for (int i = position; i < last; i++) {
                    items[i] = items[i + 1];
                }
 
                items[last] = 0;
            }
 
            last--;
 
            System.out.println(number + " удалено.");
 
            return number;
        }
        else
        {
            return 0;
        }
    }
 
    public void Print()
    {
        for(int i = 0; i < items.length; i++)
        {
            if(items[i] != 0)
            {
                System.out.print(items[i] + " ");
            }
        }
 
        System.out.println();
    }
}
мейн
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.company;
 
public class Main {
 
    public static void main(String[] args)
    {
        System.out.println("РЎРїРёСЃРѕРє, целые числа");
 
        Level1 level1 = new Level1();
 
        level1.Print();
        level1.Delete(1);
        level1.Print();
        level1.Delete(1);
        level1.Print();
    }
}
0
FatNinja
81 / 81 / 32
Регистрация: 17.02.2016
Сообщений: 226
21.02.2016, 16:18 6
anbrodier, в коде который выдал вам преподаватель не список, а статический массив из 5 элементов.
То что при вёл я - это однонаправленный связный список, как и указано в задании: ссылка.
Имхо, мой вариант лучше.
Разве что немного изменить код:
Runner:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Runner {
 
    public static void main(String[] args) {
        
        // Create 
        UnidirectList unidirectList = new UnidirectList();
        
        // Add
        unidirectList.add("Some1");
        unidirectList.add("Some2");
        unidirectList.add("Some3");
 
        // Remove
        unidirectList.remove("Some1");
        
        System.out.println(unidirectList);
    }
}

UnidirectList:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class UnidirectList {
    
    private Node first = null;
 
    public UnidirectList() {
    }
 
    public UnidirectList(String first) {
        this.first = new Node(first);
    }
    
    public Node getLastNode() {
        if (first == null) {
            return null;
        }
        Node current = first;
        while (current.getNext() != null) {
            current = current.getNext();
        }
        return current;
    }
    
    public void add(String node) {
        if (first == null) {
            first = new Node(node);
        } else {
            Node last = getLastNode();
            last.setNext(new Node(node));
        }
    }
    
    public void remove(String node) {
        if (first == null) {
            throw new IllegalArgumentException("List is empty");
        }
        Node removeNode = new Node(node);
        Node previous = null;
        Node current = first;
        do {
            if (current.equals(removeNode)) {
                if (previous == null) {
                    if (current.getNext() == null) {
                        first = null;
                        return;
                    } else {
                        first = current.getNext();
                    }
                } else {
                    if (current.getNext() == null) {
                        previous.setNext(null);
                        return;
                    } else {
                        previous.setNext(current.getNext());
                    }
                }
            } else {
                previous = current;
            } 
            current = current.getNext();
        } while (current != null);
    }
 
    @Override
    public String toString() {
        if (first != null) {
            StringBuilder result = new StringBuilder();
            Node current = first;
            do {
                result.append(current);
                current = current.getNext();
            } while (current != null);
            return result.toString();
        }
        return null;
    }
}
0
anbrodier
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 36
21.02.2016, 16:38  [ТС] 7
Цитата Сообщение от FatNinja Посмотреть сообщение
Имхо, мой вариант лучше.
Спасибо большое, вот только получил доступ к контакту своему, вот точное задание
-описать структуру данных(17 вариант) с векторным способом размещения элементов в памяти. Тип элементов и структуру выбрать в соответствии с вариантом.
-Создать экземпляр структуры данных
-Вставить элементы в структуру данных и вывести содержание этой структуры.(в т.ч эти элементы)
-удалить несколько элементов из структуры данных и вывести содержание

Вариант 17 - Список(строковый, содержащий целые положительные числа)

Еще раз спасибо за список, буду разбираться
0
korvin_
2202 / 1693 / 323
Регистрация: 28.04.2012
Сообщений: 5,998
21.02.2016, 20:12 8
Цитата Сообщение от FatNinja Посмотреть сообщение
setters

Не по теме:

Фу таким быть. Будь мужиком, используй иммутабельные объекты! =)

1
21.02.2016, 20:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2016, 20:12

Линейный, однонаправленный, связанный список для структур
Всем привет! Помогите пожалуйста переделать эту программу, так чтобы в нем...

Разработать способ экономного размещения в памяти заданной разреженной таблицы
Быть может кто-нибудь может сделать задачу? Был бы очень благодарен....

Разработать способ экономного размещения в памяти заданного разреженного массива
Добрый день! Помогите пожалуйста разобраться почему программа автоматически...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru