亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? heap.java

?? JAVA實現的數據結構
?? JAVA
字號:
import java.util.Random;

class Value {
    public int value;
    public Value(int v) {
        value = v;
    }
}

class Links {
    public int head = -1, tail = -1;
    public Links(int h, int t) {
        head = h; tail = t;
    }
}

class Cell {
    public boolean atom;
    public boolean marked = false;
    public int prev = -1, next = -1;
    public Object info = null; // either Value or Links;
}

public class Heap {
    private final int maxHeap = 6, maxRoot = 50, empty   = -1;
    private int rootCnt = 0;
    private boolean OK = true;
    private Cell[] heap = new Cell[maxHeap];
    private int[] roots = new int[maxRoot];
    private int freeCells = empty, nonFreeCells = empty;
    private Random rd = new Random(10);
    public Heap() {
        for (int i = maxHeap-1; i >= 0; i--) {
            heap[i] = new Cell();
            freeCells = insert(i,freeCells);
        }
        for (int i = maxRoot-1; i >= 0; i--)
            roots[i] = empty;
    }
    public int rootCnt() {
        return rootCnt;
    }
    public void updateHead(int p, int q) {       // Lisp's rplaca;
        if (roots[p] != empty && !heap[roots[p]].atom)
            ((Links)heap[roots[p]].info).head = roots[q];
    }
    public void updateTail(int p, int q) {       // Lisp's rplacd;
        if (roots[p] != empty && !heap[roots[p]].atom)
            ((Links)heap[roots[p]].info).tail = roots[q];
    }
    private int detach(int cell, int list) {
        if (heap[cell].next != empty)
            heap[heap[cell].next].prev = heap[cell].prev;
        if (heap[cell].prev != empty)
            heap[heap[cell].prev].next = heap[cell].next;
        if (cell == list)                 // head of the list;
             return heap[cell].next;
        else return list;
    }
    private int insert(int cell, int list) {
        heap[cell].prev = empty;
        if (cell == list)   // don't create a circular list;
             heap[cell].next = empty;
        else heap[cell].next = list;
        if (list != empty)
            heap[list].prev = cell;
        return cell;
    }
    private void collect() {
        int p, markDescendants = empty, markedCells  = empty;
        for (p = 0; p < rootCnt; p++) {
            if (roots[p] != empty) {
                nonFreeCells    = detach(roots[p],nonFreeCells);
                markDescendants = insert(roots[p],markDescendants);
                heap[roots[p]].marked = true;
            }
        }
        printList(markDescendants,"markDescendants C1 "+p);
        for (p = markDescendants; p != empty; p = markDescendants) {
            markDescendants = detach(p,markDescendants);
            markedCells     = insert(p,markedCells);
            if (!heap[p].atom) {
                if (!heap[((Links)heap[p].info).head].marked) {
                     nonFreeCells    = detach(((Links)heap[p].info).head,nonFreeCells);
                     markDescendants = insert(((Links)heap[p].info).head,markDescendants);
                     heap[((Links)heap[p].info).head].marked = true;
                }
                if (!heap[((Links)heap[p].info).tail].marked) {
                     nonFreeCells    = detach(((Links)heap[p].info).tail,nonFreeCells);
                     markDescendants = insert(((Links)heap[p].info).tail,markDescendants);
                     heap[((Links)heap[p].info).tail].marked = true;
                }
            }
        }
        printList(markedCells,"MarkedCells");
        for (p = markedCells; p != empty; p = heap[p].next)
            heap[p].marked = false;
        freeCells    = nonFreeCells;
        nonFreeCells = markedCells;
    }
    private boolean allocateAux(int p) {
        if (p == maxRoot) {
             System.out.println("No room for new roots");
             return !OK;
        }
        if (freeCells == empty)
             collect();
        if (freeCells == empty) {
             System.out.println("No room in heap for new cells");
             return !OK;
        }
        if (p == rootCnt)
             rootCnt++;
        roots[p] = freeCells;
        freeCells    = detach(roots[p],freeCells);
        nonFreeCells = insert(roots[p],nonFreeCells);
        return OK;
    }
    public void allocateAtom (int p, int val) {        // an instance of Lisp's setf;
        if (allocateAux(p) == OK) {
            heap[roots[p]].atom = true;
            heap[roots[p]].info = new Value(val);
        }
    }
    public void allocateNonAtom(int p, int q, int r) { // Lisp's cons;
        if (allocateAux(p) == OK) {
            heap[roots[p]].atom = false;
            heap[roots[p]].info = new Links(roots[q],roots[r]);
        }
    }
    public void deallocate(int p) {
        if (rootCnt > 0)
            if (Math.abs(rd.nextInt()) % 2 == 0)
                 roots[p] = roots[--rootCnt]; // remove variable when exiting a block;
            else roots[p] = empty; // set variable to null;
    }
    private void printList(int list, String name) {
        System.out.print(name + ": ");
        for (int i = list; i != empty; i = heap[i].next) {
            System.out.print("(" + i + " ");
            if (heap[i].atom)
                 System.out.print(((Value)heap[i].info).value);
            else if (heap[i].info != null)
                 System.out.print(((Links)heap[i].info).head + " " +
                                  ((Links)heap[i].info).tail);
            System.out.print(") ");
        }
        System.out.println();
    }
    public void printHeap() {
        System.out.print("roots: ");
        for (int i = 0; i < rootCnt; i++)
            System.out.print(roots[i] + " ");
        System.out.println();
        for (int i = 0; i < maxHeap; i++) {
            System.out.print("(" + i + ": " + heap[i].prev + " "
                 + heap[i].next + " "+ heap[i].atom + " " + heap[i].marked + " ");
            if (heap[i].atom)
                 System.out.print(((Value)heap[i].info).value);
            else if (heap[i].info != null)
                 System.out.print(((Links)heap[i].info).head + " " +
                                  ((Links)heap[i].info).tail);
            System.out.print(") ");
        }
        System.out.println();
        printList(freeCells,"FreeCells");
        printList(nonFreeCells,"NonFreeCells");
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久机这里只有精品| 在线播放国产精品二区一二区四区| 欧美电视剧在线观看完整版| 天天色综合天天| 欧美高清hd18日本| 日韩av二区在线播放| 欧美一级视频精品观看| 美国三级日本三级久久99| 欧美精品一区二区三区四区| 国产真实乱子伦精品视频| 欧美激情综合在线| 色综合天天综合在线视频| 亚洲综合无码一区二区| 日韩视频免费观看高清完整版在线观看| 日本欧美加勒比视频| 久久网站最新地址| 99视频有精品| 天堂av在线一区| 久久久久99精品一区| 91色视频在线| 国产农村妇女精品| 麻豆精品视频在线观看| 国产在线不卡一区| 色香蕉久久蜜桃| 久久日韩精品一区二区五区| 亚洲精品第1页| 久久99久久精品| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美在线制服丝袜| 欧美视频你懂的| 国产精品三级电影| 亚洲v中文字幕| 欧美精品粉嫩高潮一区二区| 3atv在线一区二区三区| 精品国产一区二区精华| 国产亚洲欧美激情| 国产精品午夜在线| 蜜桃久久精品一区二区| 欧美一级在线观看| 91福利视频网站| 欧美日韩在线三级| 国产精品视频在线看| 欧美精品99久久久**| 91在线看国产| 精品一区二区三区久久| 亚洲永久精品国产| 国产婷婷色一区二区三区| 5566中文字幕一区二区电影| av一本久道久久综合久久鬼色| 日本不卡一二三区黄网| 一区二区三区欧美在线观看| 国产精品色一区二区三区| 日韩女优制服丝袜电影| 欧美大片一区二区| 欧美电影在哪看比较好| 色狠狠桃花综合| av在线不卡免费看| 国产成人综合在线观看| 免费成人性网站| 亚洲丶国产丶欧美一区二区三区| 国产精品免费视频观看| 久久久久久久久99精品| 日韩精品自拍偷拍| 欧美一区二区女人| 91精品国产91久久综合桃花| 欧美日韩国产精品成人| 欧美日韩一级视频| 欧美在线高清视频| 欧洲一区二区三区在线| 色婷婷激情综合| 91视频国产资源| 色噜噜久久综合| 色婷婷精品大在线视频 | 久久精品国产99| 日韩av不卡在线观看| 日韩在线一二三区| 午夜久久久影院| 日韩高清一区在线| 日日夜夜一区二区| 麻豆一区二区三| 国产在线一区二区| 国产91精品久久久久久久网曝门| 国产乱码精品一区二区三区忘忧草 | 韩国一区二区视频| 国产在线精品国自产拍免费| 国产黄人亚洲片| 成人免费视频网站在线观看| 不卡高清视频专区| 在线免费视频一区二区| 欧美视频在线观看一区二区| 91精品国产综合久久福利 | 精品国产一区二区三区忘忧草| 日韩精品一区二区三区在线播放 | 欧美国产一区二区| 国产精品国产三级国产aⅴ中文 | 欧美日韩视频在线观看一区二区三区| 欧美四级电影网| 91精品国产色综合久久不卡电影| 欧美成人性福生活免费看| 久久噜噜亚洲综合| 国产精品不卡一区| 亚洲一区二区三区激情| 免费成人在线观看| 播五月开心婷婷综合| 91国模大尺度私拍在线视频| 日韩欧美一区二区视频| 久久精品人人爽人人爽| 国产精品高潮久久久久无| 亚洲精品一区在线观看| 欧美韩国日本不卡| 亚洲激情自拍视频| 美国一区二区三区在线播放| 日本午夜精品视频在线观看| 国产真实精品久久二三区| 国产一区二区三区精品视频| 波多野结衣亚洲| 欧美一a一片一级一片| 91精品国产麻豆国产自产在线 | 樱桃视频在线观看一区| 中文字幕一区二区三区色视频| 日本免费新一区视频| 美女一区二区在线观看| 91视视频在线直接观看在线看网页在线看| 成人手机电影网| 欧美日韩一区二区不卡| 亚洲色图在线视频| 国产欧美视频一区二区| 国产亚洲1区2区3区| 青青草国产精品97视觉盛宴| 国产精品高潮久久久久无| 欧美精品一区二区三| 久久免费国产精品| 亚洲欧美电影院| 精品一区二区三区久久| 在线观看国产一区二区| 亚洲精品一区二区三区福利| 一区二区三区免费| 不卡大黄网站免费看| 精品久久久久久久久久久院品网| 亚洲风情在线资源站| av在线一区二区三区| 精品国产3级a| 青娱乐精品视频| 精品视频在线免费看| 国产精品乱码久久久久久| 经典三级在线一区| 91精品国产一区二区| 亚洲超碰97人人做人人爱| 91免费观看在线| 日韩一区在线播放| 国产69精品久久99不卡| 精品国产一区久久| 日本中文字幕一区二区有限公司| 欧美性色综合网| 亚洲日本va午夜在线影院| 懂色av一区二区夜夜嗨| 国产亚洲短视频| 国产一级精品在线| www久久精品| 韩国女主播一区二区三区| 日韩精品资源二区在线| 久久精品国产一区二区三| 正在播放亚洲一区| 日本aⅴ精品一区二区三区| 91精品国产综合久久福利| 日韩精品一级中文字幕精品视频免费观看| 91久久精品网| 亚洲va欧美va天堂v国产综合| 欧美亚日韩国产aⅴ精品中极品| 亚洲色图一区二区三区| 成人动漫在线一区| 亚洲欧洲精品一区二区三区| 99久久国产综合精品女不卡| 1区2区3区精品视频| proumb性欧美在线观看| 1024精品合集| 在线观看亚洲a| 日韩精品欧美精品| 日韩欧美成人激情| 国产成人啪免费观看软件| 国产精品午夜久久| 色欲综合视频天天天| 一区二区国产盗摄色噜噜| 欧美男人的天堂一二区| 九九精品视频在线看| 国产精品视频一区二区三区不卡| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 久久久99精品久久| 懂色av一区二区夜夜嗨| 亚洲蜜桃精久久久久久久| 欧美午夜视频网站| 麻豆专区一区二区三区四区五区| 久久久久久久久久久久久夜| 成人h精品动漫一区二区三区| 亚洲综合一区二区三区| 精品国产乱码久久久久久闺蜜 | 久久97超碰国产精品超碰| 国产欧美1区2区3区| 色欧美片视频在线观看在线视频| 天堂蜜桃91精品|