zoukankan      html  css  js  c++  java
  • 循环双链表 | 判断链表元素是否对称

    王道P39T17

    主代码:

    bool symmetry(DLinkList& L){
        DNode *p=L->next,*q=L->prior;
        while(p!=q && p->data==q->data){
            p=p->next;
            q=q->prior;
        } 
        if(p==q)
            return true;
        return false;
    } 

    完整代码:

    #include <cstdio>
    #include <stdlib.h>
    
    using namespace std;
    
    typedef struct DNode{
        int data;
        struct DNode* next=NULL; 
        struct DNode* prior=NULL; 
        DNode(int x=0){    
            data=x;
        }
    }DNode;
    
    typedef DNode* DLinkList;
    
    DLinkList  build_list(int * arr,int n){
        int i;
        DLinkList L=new DNode;
        DLinkList pre=L,p;
        for(i=0;i<n;i++){
            p=new DNode(arr[i]);
            pre->next=p;
            p->prior=pre;
            pre=p;
        }
        L->prior=p;
        p->next=L;
        return L;
    }
    
    void show_list(DLinkList& L){
        DLinkList p=L->next;
        while(p!=L){
            printf("%d ",p->data);
            p=p->next;
        }
        puts("");
    }
    
    void append(DLinkList& L,int d){
        DNode* p=new DNode(d);
        DNode* end=L->prior;
        end->next=p;
        p->next=L;
        L->prior=p;
    }
    
    void insert(DLinkList& L,int i,int d){
        DNode* p=L,*n=new DNode(d);
        for(int j=0;j<i && p->next!=L;j++) 
            p=p->next;
        n->next=p->next;
        if(p->next) p->next->prior=n;
        n->prior=p;
        p->next=n;
    } 
    
    bool symmetry(DLinkList& L){
        DNode *p=L->next,*q=L->prior;
        while(p!=q && p->data==q->data){
            p=p->next;
            q=q->prior;
        } 
        if(p==q)
            return true;
        return false;
    } 
    
    int main(){
        const int n=6;
        int A_arr[n]={1,2,3,4,2,1};
        DLinkList A=build_list(A_arr,n);
        puts(symmetry(A)?"Yes":"No");
    }
     
    View Code
  • 相关阅读:
    2020以去过半,写一下上半年的总结跟下半年的计划
    js实现浏览器打印功能
    看不见远程新建git分支
    Vue中导出Excel表格方法
    SVN命令使用详解
    IOS NSTimer 定时器用法总结
    静态库与动态库的区别?
    iOS 本地缓存实现 方案借鉴
    IOS开发中NSRunloop跟NSTimer的问题
    FMDB
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8452078.html
Copyright © 2011-2022 走看看