当前位置:   article > 正文

C语言反转链表_c语言编写一个程序,反转链表并输出结果

c语言编写一个程序,反转链表并输出结果

输入:一个链表,以及反转数

输出:反转后的链表,例如,如果链表有9个结点,反转数为3,结果为321654987;反转数为4,结果为432187659;反转数为1,结果不变

函数:

  1. void Reverselist(struct List *plist, int num){
  2. if(num == 1){
  3. return;
  4. }
  5. int revernum = plist->count/num;
  6. struct Node *phead = plist->pfront; //pfront是反转前的头结点
  7. struct Node *pheadthen;
  8. struct Node *prearnow;
  9. int flag = 1; //flag用来确定反转后链表的头
  10. while(revernum > 0){
  11. pheadthen = onereverse(phead, num - 1);
  12. if(flag == 1){
  13. plist->pfront = pheadthen;
  14. flag = 0;
  15. }else{
  16. prearnow->pnext = pheadthen;
  17. }
  18. prearnow = phead;
  19. phead = phead->pnext;
  20. revernum --;
  21. }
  22. return;
  23. }

里面的onereverse函数

  1. struct Node* onereverse(struct Node *phead, int renum){
  2. struct Node *p1,*p2,*p3;
  3. p1 = phead;
  4. p2 = p1->pnext;
  5. p3 = p2->pnext;
  6. while(renum > 0){
  7. p2->pnext = p1;
  8. p1 = p2;
  9. p2 = p3;
  10. if(renum == 1){
  11. renum = 1;
  12. }else{
  13. p3 = p3->pnext;
  14. }
  15. renum --;
  16. }
  17. phead->pnext = p2;
  18. return p1;
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1016738
推荐阅读
相关标签
  

闽ICP备14008679号