已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素...

/**
 * @author:(LiberHome)
 * @date:Created in 2019/2/27 23:34
 * @description:
 * @version:$
 */
/*已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素*/
public class page06 {
    public static void main(String[] args) {
        String[] arr = {"item", "item", "Hello", "item", " sweet ", "item", "grief"};
        delItem(arr);
        show(arr);
    }

    private static void show(String[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (!"item".equals(arr[i])){
                System.out.print(arr[i] + " ");
            }
        }
    }

    /*但凡是遇到一个item就拼命往后找不为item的值,直到找到并且与之交换,树立flag,或者超出界限退出*/
    /*然后输出元素到编号flag*/
    private static void delItem(String[] arrs) {
        String temp;
        int i = 0;
        while (i < arrs.length) {
            /*如果不为item*/
            while (!"item".equals(arrs[i]) && (i + 1) < arrs.length) {
                i++;
            }
            /*超出界限就返回*/
            if ((i + 1) >= arrs.length) {
                return;
            }
            /*走到这步说明在界限内遇到了item*/
            /*立一个flag*/
            int flag = i;
            while ("item".equals(arrs[i]) && (i + 1) < arrs.length) {
                i++;
            }
            if ((i) >= arrs.length) {
                return;
            }
            /*走到这一步说明已经找到了非item元素*/
            /*交换*/
            temp = arrs[i];
            arrs[i] = arrs[flag];
            arrs[flag] = temp;
            i = flag + 1;/*回到flag后一个元素,开始新的一轮*/
            flag++;
        }
    }
}

 

转载于:https://www.cnblogs.com/liberhome/p/10447921.html

你可能感兴趣的:(已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素...)