综合题(删除类型)

/*
问题描述:一个顺序表,要求删除表中的制定制 
时间复杂度为:O(n)  空间复杂度为O(1) 
*/

#include<stdio.h>
#define MaxSize 50

typedef struct LNode{
    int data[MaxSize];
    int length;
}LNode;

//初始化顺序表
void init(LNode &L){
    L.length = 0;
} 

//构建顺序表
void create(LNode &L){
    init(L);
    int x;
    scanf("%d",&x); 
    while(x!=-1&&L.length<MaxSize){
        L.data[L.length] = x;
        L.length++;
        scanf("%d",&x);
    }
}


//显示顺序表内容
void show(LNode L){
    int i = 0;
    while(i<L.length){
        printf("%d   ",L.data[i]);
        i++;
    }
}

//删除函数
void delete1(LNode &L,int x){
    int k = 0;//用于记录不是X的数量 
    int j = 0;
    while(j<L.length){
        if(x == L.data[k]){
            j++;    
        }else{
            j++;
            k++;
        }    
        L.data[k] = L.data[j];
    } 
    L.length = k;
} 

int main(){
    LNode L;
    create(L);
    show(L);
    printf("\n");
    delete1(L,3);
    show(L);
    return 0;
}

 

posted on 2019-07-03 09:50  楠楠要上天  阅读(181)  评论(0编辑  收藏  举报