zoukankan      html  css  js  c++  java
  • 基于c语言实现链表的基本操作 二(节点释放,节点复制,线性表的链式存储的逆序)

    void *free_LNode(LNode *head){//节点的释放
     LNode *p;
     for(p=head->next;p;p=head->next){
      head->next=p->next;
      free(p);
     }
     free(head);
     printf("节点释放成功");
     
    }


    LNode *copy_LNode(LNode *head){//复制线性链表的节点
     LNode *newHead,*tail,*p,*newp;
     newHead=tail=NULL;//创建无头结点的链表L,适用于复制带头结点和不带头结点的链表
     for(p=head;p;p=p->next){
      newp=(LNode *)malloc(sizeof(LNode));//创建新节点 ,用于存放从链表head中取出的节点
      newp->next=NULL;
      if(newHead==NULL){
       newHead=newp;//由于单链表的是由头节点唯一确定的,故将取出的第一个节点作为头结点
      }else{
       tail->next=newp; 
      }
      tail=newp;
      newp->data=p->data;
     }
     printf("复制成功 ");
     return newHead; 
    }


    LNode *reserve_LNode(LNode *head){//链表的逆序
     LNode *newHead,*p;
     newHead=(LNode*)malloc(sizeof(LNode));//创建新的链表的头结点
     newHead->next=NULL;
     for(p=head->next;p;p=head->next){
      head->next=p->next;
      p->next=newHead->next;
      newHead->next=p;
     }
     printf("链表逆序之后是: ");
     return newHead;
    }
    void print(LNode *head){
     LNode *p;
     p=head->next;
     while(p!=NULL){
      printf("%d ",p->data);
      p=p->next;
     }
     printf(" ");
    }

  • 相关阅读:
    最多区间覆盖问题
    Luogu2420 让我们异或吧
    高精度计算(三) /*高精度的乘法运算*/
    用canvas画时钟
    Chrome开发者工具学习
    float浮动与清除浮动
    理解css中的position-static elativefixedabsolute
    bootstrap
    cookie与localstorage和sessionstorage的区别比较
    cookie学习
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/11273704.html
Copyright © 2011-2022 走看看