将数据存储到链接列表C ++

时间:2014-03-19 12:50:42

标签: c++ linked-list

输入格式如下。

    5
    1 2  9.0
    1 3 12.0
    2 4 18.0
    2 3  6.0
    2 5 20.0
    3 5 15.0
    0
    1 5

第一个数字是图表中的顶点数。然后下一行最多为0是图的边缘。第一个和第二个数字是顶点,第三个数字是边缘在它们之间的距离。在读取时,我无法弄清楚如何将数据存储到每个顶点的List邻接中.EX。 Vertex 1将有两个List单元格,包含2 9.0和3 12.0。我还需要将1 9.0和1 12.0放入顶点2和3.但我无法弄清楚如何将数据存储到ListCells

代码:

#include <cstdio>
using namespace std;
typedef ListCell* List;

struct ListCell
{
   ListCell* next;
   int vertex;
   double weight;

   ListCell(int v, double w, ListCell* nxt)
   {
      vertex = v;
      weight = w;
      next = nxt;
   }
};

struct Vertex
{
   bool signaled;
   long distance;
   Vertex next;
   List adjacency;    
};

struct Graph
{
   int     numVertices;
   Vertex* vertexInfo;

   Graph(int n)
   {
      numVertices = n;
      vertexInfo  = new Vertex[n+1];
      for(int i = 1; i <= n; i++)
      {
         vertexInfo[i].signaled = false;
      }
   }
};

//==============================================================
//                   readIn
//==============================================================
// 
//==============================================================

void readIn()
{
   int n, p1, p2;
   double edge;
   scanf("%i ", &n);

   Graph(n);
   while(scanf("%i " &p1) != 0)
   {

   }
}

1 个答案:

答案 0 :(得分:0)

我用来以适合业务逻辑的方式定义数据结构。

我建议您查看The Art of Computer programming,了解一些最佳做法。

关注“线性列表”一章

提示:  遍历列表并附加新节点(请处理极端情况):

Vertex* v = vertexInfo[i];
while (v->next!=null) {
   v = v->next;
}
v->next = new Vertex(....);