zoukankan      html  css  js  c++  java
  • 双向链表的基本操作(增删改查)

    #include<stdio.h>
    #include<malloc.h>
    #define ElemType int
    typedef struct DulLNode{
     ElemType data;
     struct DulLNode *lLink,*rLink;
     //定义双指针,
     //lLink头指针,rLink尾指针
    }DulLNode;  


    DulLNode *create_DulLNode(DulLNode *first){//双向循环链表
     DulLNode *newp;
     int a;
     DulLNode *tail;
     first=tail=(DulLNode *)malloc(sizeof(DulLNode));
     first->rLink=first;//创建带头节点的循环双向链表
     first->lLink=first->rLink;
     printf("请输入节点a: ");
     scanf("%d",&a);
     while(a!=-1){
      newp=(DulLNode *)malloc(sizeof(DulLNode));
      newp->data=a;
      //尾插创建链表
      newp->rLink=first; 
      newp->lLink=tail->rLink;
      tail->rLink=newp;
      first->lLink=newp->rLink;
      tail=newp;
      scanf("%d",&a);
     }
     return first;
    }


    DulLNode *Insert_DulLNode(DulLNode *first){//在节点p后插入新节点
     DulLNode *newp,*p;
     int a,b;
     newp=(DulLNode *)malloc(sizeof(DulLNode));
     p=first->rLink;
     printf("请输入插入的节点及谁的后面 ");
     scanf("%d %d",&a,&b);
     for(p=first->rLink;p!=first;p=p->rLink){
      if(p->data==b){
       newp->data=a;
       newp->rLink=p->rLink;
       newp->lLink=p;
       p->rLink=newp;
       p->rLink->lLink=newp;
       break;
      } 
     }
     return first; 
    }


    DulLNode *Delete_ByValue(DulLNode *first){
     //根据值删除节点
     DulLNode *q,*p;
     int a;
     printf("输入你要删除的节点 ");
     scanf("%d",&a);
     for(p=first->rLink,q=first;p!=first;){
      if(p->data==a){
       q->rLink=p->rLink;
       (p->rLink)->lLink=q;
       free(p);
       break;
      }else{
       p=p->rLink;
       q=q->rLink;
      }
     }
     return first;
    }


    void print(DulLNode *first){//s输出函数
     DulLNode *p;
     for(p=first->rLink;p!=first;p=p->rLink){
      printf("%d ",p->data);
     }
     printf(" ");
    }
    int main(){
     DulLNode *first;
     first=create_DulLNode(first);
     print(first);
     
     first=Insert_DulLNode(first);
     print(first);
     
     first=Delete_ByValue(first);
     print(first);
     return 0;
    }

  • 相关阅读:
    协同过滤算法
    redis雪崩,击穿,穿透
    scentos7安装redis,以及redis的主从配置
    centos7安装python3
    vm虚拟机安装centos7。克隆镜像以及快照
    全文检索django-haystack+jieba+whoosh
    drf的权限扩充
    redis分布式锁解决超卖问题
    Django结合Websocket进行WebSSH的实现
    vue-父子组件传参以及无限级评论
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/11286319.html
Copyright © 2011-2022 走看看