(一)線性表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);
}

實例

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容