结构链接列表中的编号元素

时间:2014-04-25 22:14:13

标签: c list struct linked-list element

我正在尝试编写一个函数,它将结构的链接列表作为参数。这些结构的一个元素是用于存储位置的值,例如struct#3具有3个元素。进入的列表不按顺序排列。我想浏览链表中的每个元素,并根据它们的顺序设置值。我该怎么做?

nodeT numberStructs(nodeT *temp)
{
    int i;
    i=0;
    while(temp!=NULL)
    {
    temp->struct.struct_order=i;
    temp=temp->next;
    i++;
    }
    return temp;
}

这显然不会削减它,但这是我到目前为止所得到的。 另外,为了澄清,我将添加元素,移动元素,删除元素等。而不是每次做一些改变行顺序的事情时调整计数,我想调用一个函数来理顺这些。这允许我在每次想要进行更改时只更改链表结构的指针。

1 个答案:

答案 0 :(得分:1)

typedef struct NodeT {
  struct Node *next;
  int struct_order;
  ...
} NodeT;

void fill_idx(NodeT *first) {
  int idx;
  NodeT *node;
  for (node = first, idx = 0;
       node;
       node = node->next, ++idx) {
    node->struct_order = idx;
  }
}

等效地,使用while循环:

void fill_idx(NodeT *first) {
  int idx = 0;
  NodeT *node = first;
  while (node) {
    node->struct_order = idx;
    node = node->next;
    ++idx;
  }
}