Amazing-Python-Scripts

Форк
0
/
Menu_Driven_Code_for_Doubly_LinkedList.py 
134 строки · 3.4 Кб
1
"""
2
Author: Himanshu Agarwal
3
Github: himanshu-03 (http://github.com/himanshu-03)
4
LinkedIn: agarwal-himanshu (https://linkedin.com/in/agarwal-himanshu)
5

6
# Menu Driven Code for Doubly Linked List
7
"""
8

9

10
class Node:
11
    def __init__(self, data):
12
        self.data = data
13
        self.right = None
14
        self.left = None
15

16

17
class LinkedList:
18
    def __init__(self):
19
        self.root = None
20
        self.last = None
21

22
    def insertLeft(self, data):
23
        n = Node(data)
24
        if self.root == None:
25
            self.root = n
26

27
        else:
28
            n.right = self.root
29
            self.root.left = n
30
            self.root = n
31

32
    def deleteLeft(self):
33
        if self.root == None:
34
            print('\nLinked List is empty..!!')
35
        else:
36
            temp = self.root
37
            if self.root.right == self.root.left == None:
38
                self.root = None
39
            else:
40
                self.root = self.root.right
41
            print('Deleted: ', temp.data)
42

43
    def insertRight(self, data):
44
        n = Node(data)
45
        if self.root == None:
46
            self.root = n
47
        else:
48
            temp = self.root
49
            while temp.right != None:
50
                temp = temp.right
51
            temp.right = n
52
            n.left = temp
53
            n.right = None
54
        print('Inserted Element: ', n.data)
55

56
    def deleteRight(self):
57
        if self.root == None:
58
            print('\nLinked List is empty..!!')
59
        else:
60
            if self.root.right == self.root.left:
61
                self.root = None
62
            else:
63
                temp = self.root
64
                while temp.right != None:
65
                    temp = temp.right
66
                print('\nDeleted: ', temp.data)
67
                temp = temp.left
68
                temp.right = None
69

70
    def printList(self):
71
        if self.root == None:
72
            print('\nLinked List is empty..!!')
73
            return
74
        else:
75
            temp = self.root
76
            print('Elements of linked list are: ')
77
            while temp != None:
78
                print('|', temp.data, ' <-> ', end=" ")
79
                temp = temp.right
80
            print('None')
81
            print('')
82

83
    def printListReverse(self):
84
        if self.root == None:
85
            print('\nLinked List is empty..!!')
86
            return
87
        else:
88
            temp = self.root
89
            print('Elements of linked list are: ')
90
            while temp.right != None:
91
                temp = temp.right
92
            while temp != None:
93
                print('|', temp.data, ' <-> ', end=" ")
94
                temp = temp.left
95

96
            print('None')
97
            print('')
98

99

100
o = LinkedList()
101

102
while True:
103
    print('----------------------')
104
    print('\n1. Insert from Left\n2. Insert from Right\n3. Delete from Left\n4. Delete from Right\n5. Print Linked List\n6. Print Reverse Linked List\n0. Exit')
105
    print('----------------------')
106

107
    ch = int(input('\nEnter your choice: '))
108

109
    if ch == 1:
110
        data = int(input('\nEnter value to be inserted in left: '))
111
        o.insertLeft(data)
112

113
    elif ch == 2:
114
        data = int(input('\nEnter value to be inserted in right: '))
115
        o.insertRight(data)
116

117
    elif ch == 3:
118
        o.deleteLeft()
119

120
    elif ch == 4:
121
        o.deleteRight()
122

123
    elif ch == 5:
124
        o.printList()
125

126
    elif ch == 6:
127
        o.printListReverse()
128

129
    elif ch == 0:
130
        print('You are out of the program..!!')
131
        break
132

133
    else:
134
        print('\nWrong Input..\nEnter the correct choice..!!\n')
135

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.