title: Dijkstra's Algorithm for doubly linked skip list?
body: <p>So I am having trouble implementing Dijkstra's for my specific program. Here is the current structure I am using as my "nodes":</p>
  
  <pre><code>struct Ladders{
      LONG x1;
      LONG y1;
      LONG y2;
      struct Platforms *top;
      struct Platforms *bottom;
  };
  
  struct JumpPath{
      double jumpCost;
      int direction;
      bool leftEdge;
      struct Platforms *jumpStart;
      struct Platforms *jumpEnd;
  };
  
  struct Platforms{
      LONG x1;
      LONG y1;
      LONG x2;
      LONG y2;
      int index;
      int platNode;
      int id;
      struct Platforms *prev;
      struct Platforms *next;
      struct Ladders *rope;
      std::vector&lt;JumpPath*&gt; jump;
  };
  std::vector&lt;Platforms*&gt;P;
  </code></pre>
  
  <p>So P is holding all of my platform data in the form of nodes. Each node contains platforms that are connected at the vertices. So in essence, just a doubly linked list. The jump paths and ladders represent a skip to another node, making this a doubly linked skip list. All in all, I am trying to figure out the best way to implement dijkstra's algorithm for my program because I need to save the path as well. The below image is the visualization of the platform data that I am saving into nodes: 
  <a href="https://i.stack.imgur.com/LftC3.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LftC3.jpg" alt="Heres my precalculated node path"></a></p>
  
  <p>How can I record the path the algorithm would take and should I use another vector to do this? I was also thinking of creating another struct called Edges and keeping all the information like whether it's a jump, cost, and vertices it came from and is going to. The only problem is, I wouldn't know how I would keep track of them in the order of the path. </p>