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;
      }
    }
  • 相关阅读:
    ural 1227 dfs判环&求最长路
    uva 11990 块状链表
    图论·二分图
    图论·双连通分量
    图论·欧拉迹
    组合博弈
    解题策略·状态精简
    组合计数·棋盘统计
    组合计数·图形统计
    组合计数·经典序列问题
  • 原文地址:https://www.cnblogs.com/wangjz/p/4740632.html
Copyright © 2011-2022 走看看