C转到循环中链表的开头

C转到循环中链表的开头,c,linked-list,C,Linked List,嗨,我有一个链表,定义如下 struct process { int a; struct process *next; }; typedef struct process node; 我有两个节点,比如说4和5 我想要一个循环,它遍历链表并将每个节点递减1,直到其为0 有什么建议吗 我有: do { if (arrivalTime->next == NULL) {

嗨,我有一个链表,定义如下

struct process   
{             
    int a;                    
    struct process *next;     
};

typedef struct process node;
我有两个节点,比如说4和5

我想要一个循环,它遍历链表并将每个节点递减1,直到其为0

有什么建议吗

我有:

  do
  {
    if (arrivalTime->next == NULL)
    {
      // printf("A is: %d \n", arrivalTime->a);
      printf("--       ");
      break;
    }
    else
    {
      //  printf("A is: %d \n", arrivalTime->a);
      printf("--       ");
      arrivalTime->a--;
      arrivalTime = arrivalTime->next;
    }
    //arrivalTime = start;
 } while(1);

我只能让循环运行一次。

我建议您编写一个循环,并将每个节点递减1,如果有具体问题,请回到这里询问一个问题,如果您有两个节点,则循环运行正常。
arrivalTime->a=arrivalTime->a--应该是
到达时间->a--。谢谢你,leeduhem。如果它是一个n节点loopAvoid
do{…}while(…)只要可能;最好在循环的顶部进行测试(如果可能,应该避免无限循环,而底部测试的无限循环从来都不是一个好主意)。您当然可以在这里这样做(
while(arrivalTime!=NULL){…比您当前拥有的更简单的代码…}
)。
arrivalTime = start;
while(arrivalTime == NULL)
 {
      arrivalTime->a--;
      printf("A is: %d \n", arrivalTime->a);
      arrivalTime = arrivalTime->next;
 }