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;
      }
    }
  • 相关阅读:
    03-spring bean
    04-spring的依赖注入
    01-课程安排
    17-注解开发
    WIN10新机必要设置记录 for 3dsmax
    ps导出svg
    VS C# 共享项目
    在Maxscript中创建.Net类型
    C# 自定义索引
    C# ?
  • 原文地址:https://www.cnblogs.com/wangjz/p/4740632.html
Copyright © 2011-2022 走看看