• 栈和队列


    P71-4.设单链表的表头指针为L,节点结构有data和next两个域构成,其中data域为字符型。试设计算法判断该链表的全部n个字符是否中心对称。例如xyx,xyyx都是中心对称。

    算法思想:使用栈来判断链表中的数据是否中心对称。
    让链表前一半元素依次进栈。
    在处理链表的后一半元素时,当访问到链表的一个元素后,就从栈中弹出一个元素,两个元素比较,若相等,则将链表中的下一个元素与栈中再弹出的元素比较,直至链表到尾。这时若栈是空栈,则得出链表中心对称的结构;否则,当链表中的一个元素与栈中弹出的元素不等时,结论为链表非中心对称,结束算法执行。
    
    int dc(LinkList L,int n){
        //L是带头结点的n个元素单链表,本算法判断链表是否是中心对称
        int i;
        char s[n/2];    //s字符栈
        p = L->next;    //p是链表的工作指针,指向待处理的当前元素
        for(i=0;i<n/2;i++){      //链表前一半元素进栈
          s[i] = p->data;
          p = p->next;
        } 
        i--;     //恢复最后的i值
        if(n%2==1) p = p->next;
        while(p && s[i] == p->data){   //检测是否中心对称
            i--;        //i充当栈顶指针
            p = p->next;
        }
        if(i==-1)  return 1;//栈为空栈 则链表中心对称
        return 0;  //链表中心不对称
    }
    

    队列

    流转星云
  • 相关阅读:
    处理集合_创建Set
    处理集合_通过对象模拟Set
    处理集合_key相等
    处理集合_创建第1个map
    idea实用快捷键
    Typroa 常用快捷键
    关于IDEA无法加载main方法的bug
    TCP通信的实现代码
    用GUI实现java版贪吃蛇小游戏
    UDP实现在线聊天功能
  • 原文地址:https://www.cnblogs.com/liuzhuan-xingyun/p/14498862.html
Copyright © 2020-2023  润新知