我正在尝试编写一个函数,该函数将结构的链表作为参数。这些结构的元素之一是用于存储位置的值,例如结构#3的元素为3。进来的单子不整齐。我想浏览链接列表中的每个元素,并根据它们的顺序设置值。我该怎么做?
nodeT numberStructs(nodeT *temp)
{
int i;
i=0;
while(temp!=NULL)
{
temp->struct.struct_order=i;
temp=temp->next;
i++;
}
return temp;
}
这显然不会削减开支,但这就是我目前所得到的。此外,为了澄清,我将添加元素、移动元素、删除元素等。我不想每次都调整计数来更改行顺序,而是想调用一个函数来解决这些问题。这使我可以在任何时候更改链表结构的指针。
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;
}
}