zoukankan      html  css  js  c++  java
  • 链表的相关算法及应用(三)

    问题六 :将两个单链表的相同的值,组成一个新的链表 

    问题七 :递增输出单链表 并释放节点 

    问题八 :将一个带头结点的单链表A 分解为两个带头结点的单链表A和B使A中保存原来序号为奇数的元素,B中保存原来序号为偶数的元素

    问题九 :将C={a1,b1,a2,b2,...,an,bn},拆分为 A={a1,a2,...,an} B={b1,b2,...,bn}; 

    问题十 :去除递增有序链表中的重复元素 

    //问题六 将两个单链表的相同的值,组成一个新的链表 
    LinkList common(LinkList L1,LinkList L2){
    LNode *t1=L1->next,*t2=L2->next;
    bool yes = 0;
    LNode *h = (LNode*)malloc(sizeof(LNode));
    h->next=NULL;
    while(t1){
    yes=0;
    t2=L2->next;
    while(t2){
    if(t1->data==t2->data){
    yes=1;
    break;
    }
    t2=t2->next;
    }
    if(yes){
    LNode *node = (LNode*)malloc(sizeof(LNode));
    node->data=t1->data;
    node->next=h->next;
    h->next = node;
    }
    t1=t1->next;
    }
    return h;
    }
    //问题七 递增输出单链表 并释放节点
    void min_del(LinkList &L){
    LNode *pre=L,*p=L->next,*t;
    while(L->next!=NULL){
    pre=L;
    p=L->next;
    while(p->next!=NULL){
    if(p->next->data<pre->next->data){
    pre=p;
    }
    p=p->next;
    }
    t=pre->next;
    printf("%d ",t->data);
    pre->next=t->next;
    free(t);
    }
    free(L);
    }
    //问题八 将一个带头结点的单链表A 分解为两个带头结点的单链表A和B
    //    使A中保存原来序号为奇数的元素,B中保存原来序号为偶数的元素
    LinkList disCreate(LinkList &A){
    LinkList B = (LinkList)malloc(sizeof(LNode));
    B->next=NULL;
    LNode *a=A,*b=B;
    LNode *r,*p=A->next;
    int index = 1;
    while(p!=NULL){
    if(index%2){
    a->next=p;
    a=p;
    }else{
    b->next=p;
    b=p;
    }
    index++;
    p=p->next;
    }
    a->next=NULL;
    b->next=NULL;
    
    return B;
    }
    //问题九 将C={a1,b1,a2,b2,...,an,bn},拆分为 A={a1,a2,...,an} B={b1,b2,...,bn}; 
    LinkList disCreate2(LinkList &A){
    LinkList B = (LinkList)malloc(sizeof(LNode));
    B->next=NULL;
    LNode *r,*a=A;
    int index = 1;
    LNode *p = A->next;
    while(p!=NULL){
    r=p->next;
    if(index%2){
    a->next=p;
    a=p;
    }else{
    p->next=B->next;
    B->next=p;
    
    }
    p=r;
    index++;
    }
    a->next=NULL;
    return B;    
    }
    //问题十 去除递增有序链表中的重复元素 
    void moveRepeat(LinkList &L){
    LNode *pre=L,*p=L->next;
    while(p!=NULL){
    if(p->next!=NULL){
    if(p->data!=p->next->data){
    pre->next=p;
    pre=p;
    }
    }else{
    pre->next=p;
    pre=p;
    }
    p=p->next;
    }
    pre->next=NULL;
    }
  • 相关阅读:
    终端启动jupyter notebook需要配置环境变量
    利用requests模块进行数据爬取初级操作
    爬虫初识
    Xadmin使用
    Vue 前端框架中限制用户短时间内多次点击同一按钮的方法(例如:登录、注册)
    Django利用Xadmin作为后台管理系统且在后台显示自定义的APP名称
    MySQL数据库中创建新用户,并将某个指定库的操作权限赋予此用户。。。
    MySQL数据库中删除用户的两种方法
    MySQL数据库中如何查询所有用户
    Django 版本升级
  • 原文地址:https://www.cnblogs.com/hekuiFlye/p/9360112.html
Copyright © 2011-2022 走看看