1. 程式人生 > 實用技巧 >資料結構2-順序表的建立、刪除、遍歷和插入操作

資料結構2-順序表的建立、刪除、遍歷和插入操作

資料結構2-順序表的建立、刪除、遍歷和插入操作

#include<stdio.h>
#include<iostream>
#define MaxSize 10
using namespace std;
typedef struct //定義順序表結構體
{
    int data[MaxSize];
    int length;
} SqList;
//順序表初始化函式
void InitSqList(SqList &sqList)
{
    sqList.length = 0;
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    for(int i = 0; i < MaxSize; i++)
    {
        sqList.data[i] = a[i];
        sqList.length ++;
    }
}

//刪除第i個元素(注意這裡是第i個位置)此元素用e帶回
bool ListDelete(SqList &sqList,int i,int &e)
{
    if(i < 1||i > sqList.length)
    {
        return false;
    }
    e = sqList.data[i-1];
    for(int j = i; j < sqList.length; j++)
    {
        sqList.data[j-1] = sqList.data[j];
    }
    sqList.length--;
    return true;
}

//在第i個位置插入元素(注意這裡是第i個位置)
bool ListInsert(SqList &sqList,int i,int e)
{
    if(i < 1||i > sqList.length||sqList.length >= MaxSize)
    {
        return false;
    }
    for(int j = sqList.length; j > i; j--)
    {
        sqList.data[j] = sqList.data[j-1];
    }
    sqList.data[i-1] = e;
    sqList.length ++;
    return true;
}

//列印順序表
void printSqList(SqList sqList)
{
    for(int i = 0; i < sqList.length; i++)
    {
        printf("%d\n",sqList.data[i]);
    }

}

int main()
{
    SqList sqList;
    printf("執行初始化函式\n");
    InitSqList(sqList);
    printf("初始化函式完成\n");
    printf("初始長度為%d\n",sqList.length);
    printf("列印順序表\n");
    printSqList(sqList);
    printf("驗證刪除超出範圍\n");
    int e;
    if(ListDelete(sqList,11,e))
    {
        printf("e為%d\n",e);
    }
    else
    {
        printf("刪除失敗\n");
    }
    printf("驗證刪除成功\n");
    if(ListDelete(sqList,9,e))
    {
        printf("e為%d\n",e);
        printf("列印順序表\n");
        printSqList(sqList);
    }
    else
    {
        printf("刪除失敗\n");
    }


    printf("驗證插入超出範圍\n");
    if(ListInsert(sqList,11,9))
    {
        printf("e為%d\n",e);
    }
    else
    {
        printf("插入失敗\n");
    }
    printf("驗證插入成功\n");
    if(ListInsert(sqList,9,9))
    {
        printf("e為%d\n",e);
        printf("列印順序表\n");
        printSqList(sqList);
    }
    else
    {
        printf("插入失敗\n");
    }
}