链表连续节点

时间:2014-05-25 06:59:55

标签: c list linked-list

有没有办法获得链表的5个连续元素?我想计算3个连续元素的总和,并将其与接下来的2个元素的总和进行比较。

我试图将元素保存在数组中然后检查总和,但我认为我已经解决了这个问题

for(i=0; i<size;i++)
{ 
  array[i]=curr_item->type;
  curr_item=curr_item->next;
}

for(i=0; i<size; i++)
{
  sum=(array[i]+array[i+1]+array[i+2]) - (array[i+3]+array[i+4]);
  if (sum>0)
     printf("Successfull\n")
  else 
     printf("Wrong\n");
}

1 个答案:

答案 0 :(得分:1)

要遍历典型的链接列表,它会像这样(C风格):

typedef struct list{
    struct list next,
    int value
} list;

list * iterator = headOfList;

while(itertaor != NULL)
   iterator = iterator->next;

你需要做的就是在while循环中添加一些if-then逻辑,将正确的有序元素加在一起。例如,要添加前两个元素(假设列表包含两个以上的元素)

int count = 0;
int sum = 0;

while(itertaor != NULL){
       if(count == 0 || count == 1)
           sum += iterator->value;
       iterator = iterator->next;
       count++;
}

如果您使用的是更方便用户的东西,那么您必须能够摆脱类似这样的事情(伪代码):

  foreach( item in list )
         if ( item is 1st, 2nd, or 3rd)
            add to running sum