мой двойной Linked List может быть понятен noobies .. Если ур, знакомый с DS в C, это вполне читаемо.
# LinkedList..
class node:
def __init__(self): //Cluster of Nodes' properties
self.data=None
self.next=None
self.prev=None
class linkedList():
def __init__(self):
self.t = node() // for future use
self.cur_node = node() // current node
self.start=node()
def add(self,data): // appending the LL
self.new_node = node()
self.new_node.data=data
if self.cur_node.data is None:
self.start=self.new_node //For the 1st node only
self.cur_node.next=self.new_node
self.new_node.prev=self.cur_node
self.cur_node=self.new_node
def backward_display(self): //Displays LL backwards
self.t=self.cur_node
while self.t.data is not None:
print(self.t.data)
self.t=self.t.prev
def forward_display(self): //Displays LL Forward
self.t=self.start
while self.t.data is not None:
print(self.t.data)
self.t=self.t.next
if self.t.next is None:
print(self.t.data)
break
def main(self): //This is kind of the main
function in C
ch=0
while ch is not 4: //Switch-case in C
ch=int(input("Enter your choice:"))
if ch is 1:
data=int(input("Enter data to be added:"))
ll.add(data)
ll.main()
elif ch is 2:
ll.forward_display()
ll.main()
elif ch is 3:
ll.backward_display()
ll.main()
else:
print("Program ends!!")
return
ll=linkedList()
ll.main()
Хотя к этому коду можно добавить еще много упрощений, я подумал сырая реализация мне более захватывающая.
Еще один способ достижения той же цели: гибкие боксы . Сделайте контейнер гибким блоком столбца, и тогда вы будете иметь полную свободу, позволяя некоторым элементам иметь фиксированный размер (поведение по умолчанию) или заполнять / уменьшать пространство контейнера (с помощью flex-grow: 1 и flex- термоусадочные:. 1)
#wrap {
display:flex;
flex-direction:column;
}
.extendOrShrink {
flex-shrink:1;
flex-grow:1;
overflow:auto;
}
См. https://jsfiddle.net/2Lmodwxk/ (попробуйте расширить или уменьшить окно, чтобы заметить эффект)
Примечание: вы также можете использовать сокращенную свойство:
flex:1 1 auto;
Я не уверен, работает ли это в вашей конкретной ситуации, но я обнаружил, что заполнение внутреннего тега div будет перемещать содержимое внутри тега div, если содержащийся div имеет фиксированный размер. Вам придется либо плавать, либо абсолютно позиционировать элемент заголовка, но в противном случае я не пробовал это для div с переменным размером.
Я использую для этого JQuery
function setSizes() {
var containerHeight = $("#listContainer").height();
$("#myList").height(containerHeight - 18);
}
, затем я привязываю изменение размера окна, чтобы пересчитывать его каждый раз при изменении размера окна браузера (если размер контейнера изменился с изменением размера окна)
$(window).resize(function() { setSizes(); });
Предполагаемая высота заголовка 17 пикселей
Список css:
height: 100%;
padding-top: 17px;
Заголовок css:
height: 17px;
float: left;
width: 100%;