根據我從OP的問題了,下面是一些提示:
這個問題與樹遍歷。菜單的每個狀態都將存儲在樹的一個節點上。
如果您對後綴樹/ trie,read here沒有任何瞭解。這個想法很簡單,因爲用戶輸入的選項有限:0,1,2,3,4,5,6 ... 9,#,*,我們可以表示一棵樹中的所有狀態。
樹中的每個節點將是這樣的:
Node{
Node [] next = new Node[12];//All options from 0 to *
Menu menu;
}
所以不是如果和開關,我們可以輕鬆地找到和使用,並通過樹遍歷從根到葉存儲所有的狀態。並且要提及所有狀態,我們只需要存儲一個變量:Node root
例如,如果我們有一系列操作#111#。 (假設#位於索引10,*位於索引11)我們將始終從root
開始 - >進入索引10處的節點 - >進入索引1處的節點...最後,返回菜單。
僞代碼:
Menu traverse(String input){
Node cur = root;
for(int index in input){
cur = cur.next[index];
}
return cur.menu;
}
對於刪除的狀態/分支,只是橫越從根到該葉,並更換該葉節點的父next
陣列與null
英寸
注:如果存儲陣列中的Menu[]menu
所有菜單,併爲每個節點可以更加輕鬆地管理菜單的列表,而不是回報的菜單,你會返回一個整數,表示期望的指數菜單中的數組menu
。
你能澄清一下「USSD」是什麼,究竟你問題是?添加和刪除菜單,在哪裏?目前爲止你的代碼是什麼以及它在哪裏/如何不起作用? –
@pekka(USSD)非結構化補充服務數據是用於由GSM蜂窩電話與服務提供商的計算機,例如,以通信的協議。當我們在手機上做一些像#111#這樣的事情時,菜單是否正確?您可以在其中導航到更多菜單。你清楚嗎? – Fawzan
這使得這部分更清晰。但是,你能澄清你的問題嗎?也許顯示一些代碼? –