Hi Mozzie 显示 / 隐藏 左侧导航 [
⌘ K
偏好 ⌘ p
显示 / 隐藏 文章目录 ]

# 线性表

上次更新: 2024-03-15 23:14:48

# 静态初始化

    #include<stdio.h>
    #define Maxsize 10

    typedef struct{
    	int data[Maxsize];
    	int length;
    }SqList;

    void InitList(SqList *L){
    	for(int i = 0;i < Maxsize;i ++ ){
    		L->data[i] = 0;
    	}
    	L->length = 0;
    }

    int main(){
    	SqList L;
    	InitList(&L);
    	for(int i = 0;i< Maxsize;i++){
    		printf("data[%d]=%d\n",i,L.data[i]);
    	}
    	return 0;
    }

# 插入数据

    #include<stdio.h>
    #include<stdlib.h>
    #define MaxSize 10

    typedef struct{
    	int *data;
        int length;
    }SeqList;

    void ListInsert(SeqList *L,int i,int e){
        for(int j = L->length;j>=i;j--){
            L->data[j] = L->data[j-1];
        }
        L->data[i-1] = e;
        L->length ++;
    }
    void InitList(SeqList *L){
    	L->data = (int*)malloc(sizeof(int)*MaxSize);
        L->length = 0;
    }
    void PrintList(SeqList L){
    	for(int i = 0;i <L.length;i++){
    		printf("%d\n",L.data[i]);
        }
    }
    int main(){
    	SeqList L;
        InitList(&L);
        L.data[0] = 0;
        L.length++;
        L.data[1] = 1;
        L.length++;
        L.data[2] = 2;
        L.length++;
        L.data[3] = 3;
        L.length++;
        L.data[4] = 4;
        L.length++;
        PrintList(L);
        ListInsert(&L,3,3);
        PrintList(L);
        return 0;
    }

# 删除数据

    #include<stdio.h>
    #include<stdlib.h>
    #include<stdbool.h>
    #define MaxSzie 10

    typedef struct{
    	int *data;
        int length;
    }SeqList;

    void InitList(SeqList *L){
        L->data = (int*)malloc(sizeof(int)*MaxSzie);
        L->length = 0;
    }

    bool InsertList(SeqList *L,int i,int e){
        if(i<1||i>L->length+1){
            return false;
        }
    	if(L->length>=MaxSzie){
            return false;
        }
        for(int j = L->length;j>=i;j--){
            L->data[j] = L->data[j-1];
        }
        L->data[i-1] = e;
        L->length++;
        return true;
    }

    bool DeleteList(SeqList *L,int i,int *e){
    	if(i<1||i>L->length){
        	return false;
        }
        *e = L->data[i-1];
        for(int j = i;j<L->length;j++){
            L->data[j-1] = L->data[j];
        }
        L->length --;
        return true;
    }

    void PrintList(SeqList L){
        for(int i = 0;i < L.length;i ++){
            printf("%d\n",L.data[i]);
        }
    }

    int main(){
        SeqList L;
        InitList(&L);
        for(int i = 0;i < 5; i++){
            InsertList(&L,i,i);
        }
        PrintList(L);
        int e = -1;
        if(DeleteList(&L,3,&e)){
            printf("已删除第3个元素，删除元素值为%d\n",e);
        }
        else{
            printf("位序i不合法，删除失败\n");
        }
        PrintList(L);
        return 0;
    }

# 静态线性表按位查找

    #include<stdio.h>
    #include<stdlib.h>
    #include<stdbool.h>
    #define MaxSize 10

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

    void InitList(SeqList *L){
        for(int i = 0;i < MaxSize;i ++){
            L->data[i] = 0;
        }
        L->length = 0;
    }

    void InsertList(SeqList *L,int i ,int e){
        L->data[i] = e;
        L->length ++;
    }
    int GetElement(SeqList L,int i){
        return L.data[i-1];
    }

    int main(){
        SeqList L;
        InitList(&L);
    	for(int i = 0;i < 9; i++){
            InsertList(&L,i,i);
        }
    	printf("%d\n",GetElement(L,5));
        return 0;
    }

# 动态初始化

    #include<stdio.h>
    #include<stdlib.h>
    #define InitSize 10

    typedef struct{
    	int *data;
        int MaxSize;
        int length;
    }SeqList;
    void InitList(SeqList *L){
    	L->data = (int*)malloc(sizeof(int)*InitSize);
        L->length = 0;
        L->MaxSize = InitSize;
    }
    void IncreaseSize(SeqList *L,int len){
        int *p = L->data;
        L->data = (int*)malloc(sizeof(int)*(InitSize+len));
        for(int i = 0;i < L->length;i ++){
            L->data[i] = p[i];
        }
        L->MaxSize = L->MaxSize + len;
        free(p);
    }
    int main(){
        SeqList L;InitList(&L);
        printf("线性表原长度：%d",L.MaxSize);
        IncreaseSize(&L,5);
        printf("线性表扩容后长度：%d",L.MaxSize);
        return 0;
    }

# 动态线性表按值查找

    #include<stdio.h>
    #include<stdlib.h>
    #include<stdbool.h>
    #define InitSize 16

    typedef struct{
    	int *data;
        int MaxSize;
        int length;
    }SeqList;

    void InitList(SeqList *L){
        L->data = (int*)malloc(sizeof(int)*InitSize);
        for(int i = 0; i < L->length;i ++){
            L->data[i] = 0;
        }
        L->MaxSize = InitSize;
        L->length = 0;
    }

    int GetElement(SeqList L,int e){
        for(int i = 0;i < L.length;i ++){
            if(L.data[i]==e){
                return i+1;
            }
        }
        return 0;
    }
    bool InsertList(SeqList *L,int i,int e){
        if(i<1||i>L->length+1){
            return false;
        }
    	if(L->length>=L->MaxSize){
            return false;
        }
        for(int j = L->length;j>=i;j--){
            L->data[j] = L->data[j-1];
        }
        L->data[i-1] = e;
        L->length++;
        return true;
    }
    int main(){
    	SeqList L;
        InitList(&L);
        for(int i = 1;i < 9; i++){
            InsertList(&L,i,i-1);
        }
        printf("查找到的结果为%d",GetElement(L,5));
        return 0;
    }

# 动态线性表按位查找

    #include<stdio.h>
    #include<stdlib.h>
    #include<stdbool.h>
    #define InitSize 10

    typedef struct{
    	int *data;
        int MaxSize;
        int length;
    }SeqList;

    void InitList(SeqList *L){
    	L->data = (int*)malloc(sizeof(int)*InitSize);
        for(int i = 0;i < InitSize;i ++){
            L->data[i] = 0;
        }
        L->MaxSize = InitSize;
        L->length = 0;
    }

    int GetElement(SeqList L,int i){
        return L.data[i-1];
    }

    bool InsertList(SeqList *L,int i,int e){
        if(i<1||i>L->length+1){
            return false;
        }
    	if(L->length>=L->MaxSize){
            return false;
        }
        for(int j = L->length;j>=i;j--){
            L->data[j] = L->data[j-1];
        }
        L->data[i-1] = e;
        L->length++;
        return true;
    }
    void PrintList(SeqList L){
        for(int i = 0;i < L.length;i ++){
            printf("%d\n",L.data[i]);
        }
    }

    int main(){
    	SeqList L;
        InitList(&L);
        for(int i = 1;i < 10;i ++){
            InsertList(&L,i,i-1);
        }
        PrintList(L);
        printf("查找到的结果为%d",GetElement(L,6));
        return 0;
    }

重拾纯粹的写作

目录

隐藏目录 ]