2020-02-26, 19:27
|
#2281
|
Banned User
Reg.datum: May 2015
Inlägg: 261
|
Citat:
Ursprungligen postat av Brofessorn
Du glömde tiotusen rader JS
|
hm jag får lära mig det
|
|
|
2020-02-27, 18:45
|
#2282
|
Registered User
Reg.datum: Jun 2013
Inlägg: 225
|
Citat:
Ursprungligen postat av KoloKille
hm jag får lära mig det
|
iFrame är rätt i vissa sammanhang men undvik om du inte absolut måste. Om du måste använda det så sök på iframe resize också så du får det rätt från början.
|
|
|
2020-02-27, 19:11
|
#2283
|
Banned User
Reg.datum: May 2015
Inlägg: 261
|
Citat:
Ursprungligen postat av TranceII
iFrame är rätt i vissa sammanhang men undvik om du inte absolut måste. Om du måste använda det så sök på iframe resize också så du får det rätt från början.
|
Jag ska ha det på min wordpress-sida för att lägga in google maps. Ska göra en karta över coronaviruset.
|
|
|
2020-02-27, 19:20
|
#2284
|
Registered User
Reg.datum: Jun 2013
Inlägg: 225
|
Citat:
Ursprungligen postat av KoloKille
Jag ska ha det på min wordpress-sida för att lägga in google maps. Ska göra en karta över coronaviruset.
|
Typ: https://en.support.wordpress.com/google-maps/
Eller vill du ha något mer custom?
|
|
|
2020-03-02, 18:36
|
#2285
|
Registered User
Reg.datum: May 2015
Inlägg: 1 601
|
Är det någon som pillat med WebAssembly tidigare? Överväger det för att kunna köra Java eller Rust på webbklienten, men känns som en riktig time sink att sätta in sig i.
|
|
|
2020-03-05, 15:01
|
#2286
|
Registered User
Reg.datum: Jul 2010
Inlägg: 77
|
Vad kommer skillnaden bli i metoderna från en single linked list till en double linked list?
Min add metod i single linked list ser ut så här nu och fungerar som den ska:
Kod:
public void add(int index, E element) throws IndexOutOfBoundsException {
if (index < 0 || index > size()){
throw new IndexOutOfBoundsException();
}
Node newNode = new Node(element); //Den här noden är det som ska sättas in
Node prevNode = null;
Node nextNode = head;
if(index == 0){ //kollar först om index är 0, är den det ska man stoppa in i början av listan och sätta nytt head.
newNode.setmNextNode(head);
head = newNode;
}
else {
for (int i = 0; i < index; i++) { // Vi vill hitta indexet före index, för att med det indexet peka på indexet vi ska sätta in på
prevNode = nextNode;
nextNode = nextNode.getmNextNode();
}
if (nextNode == null) { //Är nextNode null ska vi stoppa in i slutet i listan
prevNode.setmNextNode(newNode); //Då sätter vi prevNodes nästa nod till newNode och det är nu det sista elementet i listan
} else {
prevNode.setmNextNode(newNode); //Stoppa in någon annanstans än start/slut: prevNodes nästa nod blir newNode
newNode.setmNextNode(nextNode); //newNode pekar på nästa nod som är nextNode
}
}
size ++;
}
Vad blir skillnaden om man ska implementera samma metod i en double linked list? Måste man ha en referens som pekar på tail nu också?
|
|
|
2020-03-05, 15:15
|
#2287
|
Banned User
Reg.datum: Jan 2012
Inlägg: 10 099
|
Citat:
Ursprungligen postat av Wequ
Vad kommer skillnaden bli i metoderna från en single linked list till en double linked list?
Min add metod i single linked list ser ut så här nu och fungerar som den ska:
Kod:
public void add(int index, E element) throws IndexOutOfBoundsException {
if (index < 0 || index > size()){
throw new IndexOutOfBoundsException();
}
Node newNode = new Node(element); //Den här noden är det som ska sättas in
Node prevNode = null;
Node nextNode = head;
if(index == 0){ //kollar först om index är 0, är den det ska man stoppa in i början av listan och sätta nytt head.
newNode.setmNextNode(head);
head = newNode;
}
else {
for (int i = 0; i < index; i++) { // Vi vill hitta indexet före index, för att med det indexet peka på indexet vi ska sätta in på
prevNode = nextNode;
nextNode = nextNode.getmNextNode();
}
if (nextNode == null) { //Är nextNode null ska vi stoppa in i slutet i listan
prevNode.setmNextNode(newNode); //Då sätter vi prevNodes nästa nod till newNode och det är nu det sista elementet i listan
} else {
prevNode.setmNextNode(newNode); //Stoppa in någon annanstans än start/slut: prevNodes nästa nod blir newNode
newNode.setmNextNode(nextNode); //newNode pekar på nästa nod som är nextNode
}
}
size ++;
}
Vad blir skillnaden om man ska implementera samma metod i en double linked list? Måste man ha en referens som pekar på tail nu också?
|
Varje element i en dubbellänkad lista har en pekare till elementet framför och en pekare till elementet som kommer efter. Det första elementets pekare till föregående element pekar alltså till NULL eftersom det inte finns något element före det första elementet. Det sista elementets pekare till nästa element pekar (som vanligt) till NULL.
Så när man lägger till och tar bort element så måste man se till att dessa pekare pekar på rätt grejer.
EDIT: Skillnaden mot en vanlig lista är ju alltså att där finns enbart en länk till nästa element.
EDIT2: Om du ska stoppa in ett nytt element efter element A och före element B, så måste du alltså se till att "next element" i uppdateras till att peka på ditt nyskapade element. Dessutom måste du uppdatera "previous element" i element B så att den också pekar på ditt nyskapade element.
Senast redigerad av svenbanan den 2020-03-05 klockan 15:22.
|
|
|
2020-03-05, 16:23
|
#2288
|
Registered User
Reg.datum: Jul 2010
Inlägg: 77
|
Citat:
Ursprungligen postat av svenbanan
Varje element i en dubbellänkad lista har en pekare till elementet framför och en pekare till elementet som kommer efter. Det första elementets pekare till föregående element pekar alltså till NULL eftersom det inte finns något element före det första elementet. Det sista elementets pekare till nästa element pekar (som vanligt) till NULL.
Så när man lägger till och tar bort element så måste man se till att dessa pekare pekar på rätt grejer.
EDIT: Skillnaden mot en vanlig lista är ju alltså att där finns enbart en länk till nästa element.
EDIT2: Om du ska stoppa in ett nytt element efter element A och före element B, så måste du alltså se till att "next element" i uppdateras till att peka på ditt nyskapade element. Dessutom måste du uppdatera "previous element" i element B så att den också pekar på ditt nyskapade element.
|
Så man kan bara lägga till på det här viset så borde det funka ?
Kod:
public void add(int index, E element) throws IndexOutOfBoundsException {
if (index < 0 || index > size()){
throw new IndexOutOfBoundsException();
}
Node newNode = new Node(element); //Den här noden är det som ska sättas in
Node prevNode = null;
Node nextNode = head;
if(index == 0){ //kollar först om index är 0, är den det ska man stoppa in i början av listan och sätta nytt head.
newNode.setmNextNode(head); //Nya noden pekar på nuvarande head noden
head.setmPrevNode(newNode); //head sätter prevnode till nya noden.
newNode.setmPrevNode(null); //Nya noden pekar på null
head = newNode; //nya noden är ""nytt" head
}
else {
for (int i = 0; i < index; i++) { // Vi vill hitta indexet före index, för att med det indexet peka på indexet vi ska sätta in på
prevNode = nextNode;
nextNode = nextNode.getmNextNode();
}
if (nextNode == null) { //Är nextNode null ska vi stoppa in i slutet i listan
prevNode.setmNextNode(newNode); //Då sätter vi prevNodes nästa nod till newNode och det är nu det sista elementet i listan
tail = newNode;
} else {
prevNode.setmNextNode(newNode); //Stoppa in någon annanstans än start/slut: prevNodes nästa nod blir newNode
newNode.setmPrevNode(prevNode); //pekar newNode previous node på "prevNode"
newNode.setmNextNode(nextNode); //newNode pekar på nästa nod som är nextNode
nextNode.setmPrevNode(newNode); //nextNode prevnode pekar på newNode
}
}
size ++;
}
Tror jag fått med alla "villkor" ?
|
|
|
2020-03-05, 21:45
|
#2289
|
Registered User
Reg.datum: Jul 2010
Inlägg: 77
|
Har kommit vidare med doublelinked list men har fastnat på en metod, lastindexOf ger fel resultat men förstår inte varför?
indexOf metoden fungerar som den ska, tänkte att lastIndexOf bara är tvärtom som börjar från tail? Missar jag något?
Båda metoderna ska returnera det index där första träffen av elementet förekommer, indexof börjar från head, lastindexof börjar från tail.
Kod:
@Override
public int indexOf(E element) {
int index = 0;
Node current = head;
while (current != null){
if (current.getmElement().equals(element)){ //Matchar dom, returnera indexet.
return index;
}
index ++;
current = current.getmNextNode(); // Hoppa till nästa nod.
}
return -1;
}
@Override
public int lastIndexOf(E element) {
int index = size;
Node current = tail;
while (current != null){
if (current.getmElement().equals(element)){ //Matchar dom, returnera indexet.
return index;
}
index --;
current = current.getmPrevNode(); // Hoppa till föregående nod.
}
return -1;
}
Senast redigerad av Wequ den 2020-03-05 klockan 21:47.
|
|
|
2020-03-05, 21:58
|
#2290
|
Registered User
Reg.datum: Feb 2009
Ort: Göteborg
Inlägg: 4 160
|
Citat:
Ursprungligen postat av Wequ
Har kommit vidare med doublelinked list men har fastnat på en metod, lastindexOf ger fel resultat men förstår inte varför?
indexOf metoden fungerar som den ska, tänkte att lastIndexOf bara är tvärtom som börjar från tail? Missar jag något?
Båda metoderna ska returnera det index där första träffen av elementet förekommer, indexof börjar från head, lastindexof börjar från tail.
Kod:
@Override
public int indexOf(E element) {
int index = 0;
Node current = head;
while (current != null){
if (current.getmElement().equals(element)){ //Matchar dom, returnera indexet.
return index;
}
index ++;
current = current.getmNextNode(); // Hoppa till nästa nod.
}
return -1;
}
@Override
public int lastIndexOf(E element) {
int index = size;
Node current = tail;
while (current != null){
if (current.getmElement().equals(element)){ //Matchar dom, returnera indexet.
return index;
}
index --;
current = current.getmPrevNode(); // Hoppa till föregående nod.
}
return -1;
}
|
Antar att felet du får är förväntat index +1?
Sista index borde vara size-1 och inte size om jag kollar på hur indexOf funkar.
|
|
|
2020-03-05, 22:06
|
#2291
|
Registered User
Reg.datum: Jul 2010
Inlägg: 77
|
Citat:
Ursprungligen postat av Rickard
Antar att felet du får är förväntat index +1?
Sista index borde vara size-1 och inte size om jag kollar på hur indexOf funkar.
|
ja precis det blir index +1
Provade att ändra till
Kod:
int index = size - 1 ;
och det verkar funka nu!
Fan vad knas, är bergsäker på att jag provade samma grej för någon timme sen
|
|
|
2020-03-09, 12:37
|
#2292
|
Registered User
Reg.datum: Jul 2010
Inlägg: 77
|
Vilken datastruktur skulle ni välja i det här fallet?
Vi har en fil med data från 1946-2019 som innehåller temperaturmätningar, filen består av flera tusen rader som ser ut såhär
Kod:
...
1972-11-17;00:00:00;3.5;G
1972-11-17;01:00:00;3.0;Y
1972-11-17;02:00:00;4.0;Y
1972-11-17;03:00:00;3.0;Y
1972-11-17;04:00:00;3.0;Y
1972-11-17;05:00:00;1.0;Y
1972-11-17;06:00:00;-0.5;G
...
Till datastrukturen ska ett par metoder implementeras där man för det mesta ska söka i datan mellan två datum och plocka ut medelvärden etc.
Så det kommer alltså för det mesta ske mycket traversering i datan. Vad är en passande datastruktur att använda sig utav? Jag tänker en vanlig arraylist? men det kanske finns något som är mer lämpligt?
|
|
|
2020-03-09, 14:11
|
#2293
|
Banned User
Reg.datum: Jan 2012
Inlägg: 10 099
|
Citat:
Ursprungligen postat av Wequ
Vilken datastruktur skulle ni välja i det här fallet?
Vi har en fil med data från 1946-2019 som innehåller temperaturmätningar, filen består av flera tusen rader som ser ut såhär
Kod:
...
1972-11-17;00:00:00;3.5;G
1972-11-17;01:00:00;3.0;Y
1972-11-17;02:00:00;4.0;Y
1972-11-17;03:00:00;3.0;Y
1972-11-17;04:00:00;3.0;Y
1972-11-17;05:00:00;1.0;Y
1972-11-17;06:00:00;-0.5;G
...
Till datastrukturen ska ett par metoder implementeras där man för det mesta ska söka i datan mellan två datum och plocka ut medelvärden etc.
Så det kommer alltså för det mesta ske mycket traversering i datan. Vad är en passande datastruktur att använda sig utav? Jag tänker en vanlig arraylist? men det kanske finns något som är mer lämpligt?
|
Här kan du jämföra några olika datastrukturer och se vilken typ av prestanda som kan man kan tänkas få vid olika typer av operationer på dessa strukturer. Så du får fundera på exakt hur du kommer använda datastrukturen och vad som kan tänkas bli flaskhalsar för dig.
https://en.wikipedia.org/wiki/Search...-case_analysis
Hittade även en länk till en artikelserie om datastrukturer där författaren listar pros och cons för lite olika strukturer. Jag har inte läst artikeln, men detta är kapitel två. Vill du läsa mer om datastrukturer i allmänhet får du kanske börja med kapitel 1.
https://medium.com/omarelgabrys-blog...n-6689d725b3b0
Senast redigerad av svenbanan den 2020-03-09 klockan 14:21.
|
|
|
2020-03-09, 14:35
|
#2294
|
Registered User
Reg.datum: Jul 2010
Inlägg: 77
|
Citat:
Ursprungligen postat av svenbanan
Här kan du jämföra några olika datastrukturer och se vilken typ av prestanda som kan man kan tänkas få vid olika typer av operationer på dessa strukturer. Så du får fundera på exakt hur du kommer använda datastrukturen och vad som kan tänkas bli flaskhalsar för dig.
https://en.wikipedia.org/wiki/Search...-case_analysis
Hittade även en länk till en artikelserie om datastrukturer där författaren listar pros och cons för lite olika strukturer. Jag har inte läst artikeln, men detta är kapitel två. Vill du läsa mer om datastrukturer i allmänhet får du kanske börja med kapitel 1.
https://medium.com/omarelgabrys-blog...n-6689d725b3b0
|
Den var bra!
Är mest search, find min, find max som kommer användas så det verkar som att det står mellan en unsorted array och sorted/unsorted linked list. Båda har O(n) på search, find min, find max.
Senast redigerad av Wequ den 2020-03-09 klockan 14:41.
|
|
|
2020-03-09, 14:39
|
#2295
|
No brain, no gain
Reg.datum: Feb 2005
Ort: Stockholm/Linköping
Inlägg: 509
|
Citat:
Ursprungligen postat av Wequ
Den var bra!
Är mest search, find min, find max som kommer användas så det verkar som att det står mellan en unsorted array och unsorted linked list. Båda har O(n) på search, find min, find max.
|
... som är mycket värre än O(1) för sorterade datastrukturer, vilket din data är.
Det som fäller avgörandet är väl hur snabbt det behöver vara vid insättningar.
|
|
|
Regler för att posta
|
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg
HTML-kod är av
|
|
|
Alla tider är GMT +1. Klockan är nu 07:22.
|
|