(一)线性表C语言实现

线性表

线性表是最简单最常用的一种数据结构

C语言实现

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define true 1
#define false 0

typedef int status;
typedef int ElemType;
typedef struct List{
    ElemType elem[MAXSIZE+1];
    int length;
}List,*pList;

//基本操作
//创建长度为len的表并输入信息
pList InitList(int len){
    pList L = (pList)malloc(sizeof(List));
    L->length=len;
    for(int i=1;i<=len;i++){
        scanf("%d",&L->elem[i]);
    }
    return L;
}
//销毁线性表L
status DestroyList(pList L){
    return true;
}
//清空表,使L成为一个空表
status ClearList(pList L){
    if(L!=NULL){
        
    }
    return true;
}
//在第n个位置插入元素elem
ElemType InsertList(pList L,int n,int elem){
    L->length++;
    if(L->length>=MAXSIZE || n>L->length || n<=0){
        printf("插入失败");
        exit(-1);
    }
    for (int i = L->length; i > n; --i)
    {
        L->elem[i] = L->elem[i-1];
    }
    L->elem[n]=elem;
    return elem;
}

//删除第n个元素
ElemType DeleteElem(pList L,int n){
    L->length--;
    ElemType elem = L->elem[n];
    for (int i = n; i <= L->length; ++i){
        L->elem[i]=L->elem[i+1];
    }
    return elem;
}
//遍历列表
status TraverseList(pList L){
    for (int i = 1; i <= L->length; ++i)
    {
        printf("%d ",L->elem[i]);
    }
    printf("\n");
    return true;
}
//把两个有序的表合起来,然后仍然有序
pList MergeList(pList L1,pList L2){
    pList L3= (pList)malloc(sizeof(List));
    int i=1;int j=1;int k=1;
    while (i<=L1->length && j<=L2->length) {
        if(L1->elem[i]<L2->elem[j]){
            InsertList(L3,k,L1->elem[i]);
            i++;
        }else{
            InsertList(L3,k,L2->elem[j]);
            j++;
        }
        k++;
    }
    while(i<=L1->length){
        InsertList(L3, k, L1->elem[i]);
        i++;k++;
    }
    while(j<=L2->length){
        InsertList(L3, k, L2->elem[j]);
        j++;k++;
    }
    return L3;
}


int main(){
    pList L1 = InitList(5);
    pList L2 = InitList(6);
    TraverseList(L1);
    //插入10
    InsertList(L1,2,10);
    TraverseList(L1);
    //删除第二个位置上的10
    DeleteElem(L1,2);
    TraverseList(L1);
    pList L3 =MergeList(L1, L2);
    TraverseList(L3);
}

实例

《(一)线性表C语言实现》 image.png

    原文作者:林里icer
    原文地址: https://www.jianshu.com/p/7169be8ea175
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞