zoukankan      html  css  js  c++  java
  • C语言双向链表的操作

    typedef struct node
    {
    char name[20];
    struct node *prior,*next;
    }STU;
    
    /*逆置双链表的原理,依次将原链表中的结点
    用头插法插入到新的链接表中,新的链表不用分配内存*/
    STU *reverse(stud *head)
    {
      STU *p,*r,*h;
    /*
    p用来指向原链表中的第一个结点,待链入新链表头的结点
    r用来指向原链表中的第二个结点
    h用来指向新链表中的第一个结点
    */
      h=head->next;/*h用来指向链表的第一个结点*/
      if(h&&h->next)
      {
        p=h;
        r=p->next;/*r指向p的下一个结点*/
        p->next=NULL;/*让p的下一个结点为NULL*/
      while(r)
      {
        p=r;/*p指向r结点*/
        r=r->next;/*r继续指向下一个结点*/
        p->next=h;/*p的后继指向链表的第一个结点h*/
        h->prior=p;/*链表的第一各结点h的前驱指向p*/
        h=p;/*p链入链表后,p就成为了链表的第一个结点*/
      }
      head->next=h;/*头结点head的后继指向新链表的第一个结点h*/
      h->prior=head;/*新链表的第一结点h的前驱指向头结点head*/
      return head;
      }
    }
  • 相关阅读:
    HZOJ 太阳神
    HZOJ Silhouette
    HZOJ Dash Speed
    HZOJ 巨神兵
    值得纪念的cspsAFO总结
    11月FLAG
    模板易错总结
    树 总结
    DP总结(优化等)
    代码低级错误总结
  • 原文地址:https://www.cnblogs.com/wangjz/p/4740632.html
Copyright © 2011-2022 走看看