資料結構之順序表的實現(C語言)
阿新 • • 發佈:2018-12-10
實現程式碼:
#ifndef __LINEARLIST_H__ #define __LINEARLIST_H__ #include <malloc.h> #include <stdio.h> typedef struct { int* base; int size; int len; }LinearList,* pList; int initList(pList list, int size) { if(size < 1) size=100; list->base = (int*) malloc(size*sizeof(int)); if(!list->base) return 0; list->size = size; list->len = 0; return 1; } int listLength(pList list) { return list->len; } int addTailData(pList list, int e) { if(!list->base) return 0; list->base[list->len] = e; list->len++; return 1; } int getElem(pList list, int pos, int* e) { if(pos<1 || pos>list->len || !list->base) return 0; *e = list->base[pos-1]; return 1; } int listInsert(pList list,int pos, int e) { int i=0; if(pos<1 || pos>list->len || !list->base || list->size<list->len+1) return 0; for(i=list->len+1; i>=pos; --i) list->base[i] = list->base[i-1]; list->base[i]=e; list->len++; return 0; } int reverse(pList list) { int i = 0; if(!list) return 0; for(i; i<list->len; ++i) { printf("%d ", list->base[i]); } printf("\n"); return 1; } int listDelete(pList list, int pos, int* e) { int i=pos-1; if(pos<1 || pos>list->len || !list->base) return 0; *e = list->base[i]; for(i; i<list->len-1; ++i) { list->base[i] = list->base[i+1]; } list->len--; return 1; } #endif //__LINEARLIST_H__
測試程式碼:
#include <stdio.h> #include "Linearlist.h" int main() { int val = -1; LinearList list; initList(&list, 10); addTailData(&list, 1); addTailData(&list, 2); addTailData(&list, 3); reverse(&list); listInsert(&list, 1, 50); reverse(&list); getElem(&list, 2, &val); listInsert(&list, 3, 20); printf("%d \n", val); reverse(&list); listDelete(&list, 3, &val); printf("%d \n", val); reverse(&list); return 0;