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(" ");
    }

  • 相关阅读:
    要求两个条件都为假时,执行某些操作
    Celery + RabbitMq 示意图
    关于消息队列的好文章
    django related_name, on_delete
    Celery 图,[转]
    django model 中 meta子类详解
    django 自定义app
    python __dict__
    Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)【转】
    scala private
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/11273704.html
Copyright © 2011-2022 走看看