數據結構:線性表

#include<stdio.h>
typedef struct{
        ElementType Data[MAXSIZE];
        int Last;
    } List;

void main{
    //1 初始化 建立空的順序表
    List *MakeEmpty(){
        List *PtrL;
        PtrL = (List *)malloc(sizeof(List));
        PtrL->Last = -1;
        return PtrL;
    }
    //2 查找
    int find(ElementType x,List *PtrL){
        int i=0;
        while(i <= PtrL->Last && PtrL->Data[i] != x) 
            i++;
        if(i > PtrL->Last) return -1;   //如果沒有找到 返回-1
        else return i;                  //如果找到了 返回的是存儲位置
    }
}
    //3 插入(第i(1<=i<=n+1)個位置插入一個值爲x的新元素)
    //在進行插入的操作時 得先把第i開始的數爲後移一位 再對空出來的第i位進行賦值
    void Insert(ElementType x,List *PtrL){
        int j;
        //檢測表是否滿了
        if(PtrL->Last == MAXSIZE-1){
            printf("表滿");
            return;
        }
        //i的值小於1或者i的值大於表長
        if(i<1 ||i> PtrL->Last+2){
            printf("位置不合法");
            return;
        }
        //移動並且插入
        for(j=PtrL->Last;j>=i-1;j--){
            PtrL->Data[j+1] = PtrL->Data[j];  //將第i到last的值倒序向後移動
        PtrL->Data[i-1] = x;
        PtrL->Last++;
        return ;
        }
    }
    //4 刪除(刪除表的第i(1<=i<=n)個位置上的數)
    //這裏跟添加類似 只不過是第i個數開始往前移動 不需要額外 "刪除這個動作"
    void Delete(int i,List *PtrL){
        int j;
        if(i<1||i>PtrL->Last+1){
            printf("不存在第%d個元素\n",i );
            return ;
        }
        for(j=i;j<PtrL->Last;j++){
            PtrL->Data[j-1] = PtrL->Data[j];  //將a_i+1--a_n順序向前移動
        PtrL->Last --;                      //Last仍指向最後元素
        return ;
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章