SeqList.h
成都創新互聯公司服務項目包括合川網站建設、合川網站制作、合川網頁制作以及合川網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,合川網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到合川省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
#ifndef SEQ_LIST_H #define SEQ_LIST_H typedef void SeqListNode; typedef void SeqList; /* * 創建順序表 * @param capacity 順序表的最大容量 * @return 返回順序表的指針 */ SeqList* SeqList_Create(unsigned int capacity); /* * 銷毀順序表 * @param list 順序表的指針 */ void SeqList_Destroy(SeqList *list); /* * 清空順序表 * @param list 順序表的指針 */ void SeqList_Clear(SeqList *list); /* * 向順序表pos位置處插入元素 * @param list 順序表指針 * @param node 元素指針 * @param pos 插入的索引 */ int SeqList_Insert(SeqList *list,SeqListNode *node,int pos); /* * 獲取順序表中索引位置處的元素 * @param list 順序表指針 * @param pos 順序表索引值 * @param return 元素指針 */ SeqListNode* SeqList_Get(SeqList *list,int pos); /* * 刪除順序表中索引位置處的值 * @param list 順序表的指針 * @param pos 順序表索引 * @param return 非0表示刪除成功 */ int SeqList_Remove(SeqList *list,int pos); /* * 獲取順序表當前已存儲元素的個數 * @param list 順序表的指針 * @return 順序表中已存儲元素的個數 */ int SeqList_Length(SeqList *list); /* * 獲取順序表最大可存儲元素的個數 * @param list 順序表的指針 * @return 順序表最大可存儲元素的個數 */ int SeqList_Capacity(SeqList *list); #endif // SEQLIST_H
SeqList.c
#include "SeqList.h" #include <malloc.h> typedef unsigned int TSeqListNode; //順序表節點 typedef struct _SeqList { unsigned int length; //順序表已存儲元素的個數 unsigned int capacity; //順序表最大可存儲元素的個數 TSeqListNode *element[];//順序表節點柔性數組 }TSeqList; /* * 創建順序表 * @param capacity 順序表的最大容量 * @return 返回順序表的指針 */ SeqList* SeqList_Create(unsigned int capacity) { TSeqList *list = 0; //創建一個可容納SeqList結構體與柔性節點的空間 int size = sizeof(TSeqList) + sizeof(TSeqListNode) * capacity; list = (TSeqList *)malloc(size); if(list != 0) { list->length = 0; list->capacity = capacity; } return list; } /* * 銷毀順序表 * @param list 順序表的指針 */ void SeqList_Destroy(SeqList *list) { free(list); } /* * 清空順序表 * @param list 順序表的指針 */ void SeqList_Clear(SeqList *list) { TSeqList *s_list = (TSeqList *)list; if(s_list != 0) { s_list->length = 0; } } /* * 向順序表pos位置處插入元素 * @param list 順序表指針 * @param node 元素指針 * @param pos 插入的索引 * @param return 返回非0表示插入成功 */ int SeqList_Insert(SeqList *list,SeqListNode *node,int pos) { int i; //判斷順序表指針和被插入元素的指針是否為空 int ret = ((list != 0) && (node != 0)); TSeqList *s_list = (TSeqList *)list; TSeqListNode *s_node = (TSeqListNode *)node; //判斷插入的索引是否合法,數組空間是否剩余 ret = ((pos >= 0) && (pos <= s_list->length) && (s_list->length + 1 <= s_list->capacity)); if(ret) {//參數合法,可以插入 //從最后一個開始把數據往后挪 for(i = s_list->length;i > pos;i-- ) { s_list->element[i] = s_list->element[i -1]; } s_list->element[i] = s_node; s_list->length++; } return ret; } /* * 獲取順序表中索引位置處的元素 * @param list 順序表指針 * @param pos 順序表索引值 * @param return 元素指針 */ SeqListNode* SeqList_Get(SeqList *list,int pos) { SeqListNode *s_node = 0; TSeqList *s_list = (TSeqList *)list; if( (s_list != 0) && (pos >= 0) && (pos < s_list->length)) { s_node = s_list->element[pos]; } return s_node; } /* * 刪除順序表中索引位置處的值 * @param list 順序表的指針 * @param pos 順序表索引 * @param return 順序表中索引位置處元素的值 */ int SeqList_Remove(SeqList *list,int pos) { int i; TSeqList *s_list = (TSeqList *)list; int ret = ((s_list != 0) && (pos >= 0) && (pos < s_list->length)); if(ret) { for(i = pos + 1;i < s_list->length;i++) { s_list->element[i -1] = s_list->element[i]; } s_list->length--; } return ret; } /* * 獲取順序表當前已存儲元素的個數 * @param list 順序表的指針 * @return 順序表中已存儲元素的個數 */ int SeqList_Length(SeqList *list) { TSeqList *s_list = (TSeqList *)list; int ret = -1; if(s_list != 0) { ret = s_list->length; } return ret; } /* * 獲取順序表最大可存儲元素的個數 * @param list 順序表的指針 * @return 順序表最大可存儲元素的個數 */ int SeqList_Capacity(SeqList *list) { TSeqList *s_list = (TSeqList *)list; int ret = (s_list != 0); if(ret) { ret = s_list->capacity; } return ret; }
網頁名稱:【C語言數據結構】順序表
標題網址:http://m.newbst.com/article34/jegspe.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、商城網站、App開發、網站營銷、定制網站、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯