利用數組創建的順序表實現各種功能
阿新 • • 發佈:2017-05-11
刪除元素 turn ati span null posit class efi 獲取
花費了幾天的時間最終達到要求了。
主函數main.c
#include "func.h" #define MAXSIZE 100 INT32 main( void ) { INT32 temp[MAXSIZE] = {NULL}, f = 0, OSM = 1; OSM = create_SL (temp); do { OSM = OSM_Printf("\n\t========================================\n"); OSM = OSM_Printf("\t=============請選擇功能選項:============\n"); OSM = OSM_Printf("\t===============1、插入元素===============\n"); OSM = OSM_Printf("\t===============2、刪除元素===============\n"); OSM = OSM_Printf("\t===============3、追加元素===============\n"); OSM = OSM_Printf("\t===============4、獲取元素===============\n"); OSM = OSM_Printf("\t===============5、查找元素===============\n"); OSM = OSM_Printf("\t===============6、清空元素===============\n"); OSM = OSM_Printf("\t===============7、推斷是否空=============\n"); OSM = OSM_Printf("\t===============8、推斷是否已滿===========\n"); OSM = OSM_Printf("\t===============9、統計元素的個數=========\n"); OSM = OSM_Printf("\t===============0、退出===================\n"); OSM = OSM_Printf("\t**************** 選擇數字 ***************\n"); f = scanf_for(); switch(f) { case 1: OSM = Insert_SL (temp); break; case 2: OSM = Delete_SL (temp); break; case 3: OSM = add_SL (temp); break; case 4: OSM = get_SL (temp); break; case 5: OSM = find_SL (temp); break; case 6: OSM = clear_SL (temp); break; case 7: OSM = empty_SL (temp); break; case 8: OSM = full_SL (temp); break; case 9: OSM = number_SL (temp); break; case 0: break; default: OSM = OSM_Printf("輸入數據是非法的!功能函數:func.c。!
!\n"); break; } }while (0 != f); return 0; }
#include "func.h" #define MAXSIZE 100 /* 開始限定這個順序表的大小 */ INT32 create_SL(INT32 a[]) /* 創建 */ { INT32 OSM = 1, i32num = 0, i32 = 0; OSM = OSM_Printf("請輸入要創建鏈表中元素的個數:\n"); i32num = scanf_for(); if ( (0 > i32num) || (MAXSIZE < i32num) ) /* 創建的條件 */ { OSM = OSM_Printf(" 非法的數據\n"); } else { OSM = OSM_Printf("輸入相關的元素:\n"); for ( i32 = 0; i32 < i32num; i32++) /* 輸入的元素 */ { a[i32] = scanf_for(); } } OSM = OSM_Printf("已經創建了表\n"); OSM = OSM_Printf("表為:"); for ( i32 = 0; i32 < i32num; i32++) /* 打印出來 */ { if ( NULL != a[i32] ) { OSM = OSM_Printf(" %d \t",a[i32]); } } i32length = i32; return *a; } INT32 Insert_SL(INT32 b[]) { /* 定義的標識符。 輸入的位置, 數組的長度, 插入的數據,循環體變量 */ INT32 OSM = 1, i32Insert_position = 0, i32Insert_data = 0, i32j = 0; OSM = OSM_Printf("輸入要插入的位置和數據:\n"); i32Insert_position = scanf_for(); /* 插入的位置 */ if(( 0 > i32Insert_position) || (i32length < i32Insert_position)) /* 插入位置的條件不滿足的情況下 */ { OSM = OSM_Printf("非法的數據輸入:\n"); } else /* 插入的條件滿足的條件下 */ { OSM = OSM_Printf("請輸入要插入的數據:\n"); i32Insert_data = scanf_for(); /* 輸入插入的數據 */ } i32length++; /* 長度加一 */ for (i32j = i32length; i32j > (i32Insert_position-1); i32j--) /* 位置的後移 */ { b[i32j] = b[i32j - 1]; } b[i32Insert_position-1] = i32Insert_data; for ( i32j = 0; i32j < i32length ;i32j++) /* 打印出來的信息 */ { if (NULL != b[i32j]) { OSM = OSM_Printf("%d\t",b[i32j]); } } OSM = OSM_Printf("\n"); return *b; } INT32 Delete_SL(INT32 a[]) /* 刪除 */ { INT32 i32i = 0, OSM = 0, i32delete_position = 0; OSM = OSM_Printf("輸入要刪除的位置:\n"); i32delete_position = scanf_for(); /* 輸入要刪除的位置 */ if ((0 > i32length) || (i32delete_position > i32length)) /* 條件 */ { OSM = OSM_Printf("輸入的非法數據"); } else { i32length--; /* 長度減一 */ for (i32i = i32delete_position - 1; i32i < i32length; i32i++) /* 進行數據的處理 */ { a[i32i] = a[i32i+1]; } } for ( i32i = 0; i32i < i32length ;i32i++) /* 打印出來的信息 */ { if (0 <= i32i) { if (NULL != a[i32i]) { OSM = OSM_Printf("%d\t",a[i32i]); } } } return *a; } INT32 add_SL(INT32 a[]) /* 追加 */ { INT32 OSM = 1, i32add_data, i32i; OSM = OSM_Printf("輸入要追加的數據:\n"); i32add_data = scanf_for(); /* 輸入追加的元素 */ i32length++; /* 長度加1 */ a[i32length -1] = i32add_data; /* 直接賦值 */ for ( i32i = 0; i32i < i32length; i32i++) /* 打印出來的信息 */ { if (NULL != a[i32i]) { OSM = OSM_Printf("%d\t",a[i32i]); } } return *a; } INT32 get_SL(INT32 a[]) /* 獲取元素 */ { INT32 OSM = 1, i32location = 0; OSM = OSM_Printf("選擇須要獲位置\n"); i32location = scanf_for(); if (i32location > i32length) { OSM = OSM_Printf("超出範圍了\n"); } else { if ( (NULL != (i32location - 1)) && (NULL != a)) { OSM = OSM_Printf("獲取的數據為: %d \t",a[i32location - 1]); } } return 0; } INT32 find_SL(INT32 a[]) /* 查找 */ { INT32 OSM = 1,flag = 0, i32i = 0, i32elem = 0; OSM = OSM_Printf("輸入須要查找元素:\t"); i32elem = scanf_for(); OSM = OSM_Printf("查詢的位置是:"); for (i32i = 0; i32i < i32length; i32i++) { if ( i32elem == a[i32i]) { OSM = OSM_Printf(" %d ",i32i + 1); flag = 1; } } if (1 != flag) { OSM = OSM_Printf("沒有找到想要的數據!!!!!!!\n"); } return *a; } INT32 clear_SL(INT32 a[]) /* 清空 */ { a[i32length] = NULL; i32length = 0; return 0; } INT32 empty_SL(INT32 a[]) /* 判讀是否為空 */ { INT32 OSM = 1; if ( 0 == i32length) /* 推斷第一個是否為空 */ { OSM = OSM_Printf("是空的\n"); } else { OSM = OSM_Printf(" 不是空的 \n"); } return 0; } INT32 full_SL(INT32 a[]) /* 是否已滿 */ { INT32 OSM = 1; if ( MAXSIZE > i32length) /* 推斷最後一個元素是否為空 */ { OSM = OSM_Printf("沒有滿\n"); } else { OSM = OSM_Printf("已經滿了\n"); } return 0; } INT32 number_SL(INT32 a[]) /* 元素的個數 */ { INT32 OSM = 1; if ( 0 <= i32length ) { OSM = OSM_Printf("元素的個數為%d\n",i32length); } return 0; }
花費了幾天的時間最終達到要求了。
全部的代碼都能夠通過MISRA C的檢測。而且功能良好
利用數組創建的順序表實現各種功能