資料結構2-順序表的建立、刪除、遍歷和插入操作
阿新 • • 發佈:2020-09-16
資料結構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"); } }