据说这是改进版顺序链表

来源:互联网 发布:java的socket编程 编辑:程序博客网 时间:2024/06/16 23:36
哈哈哈,没看出来啊!!!
#include <stdio.h>#include <stdlib.h>#include "SeqList_V2.h"/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {    SeqList* list = SeqList_Create(10);        int i = 0;    int j = 1;    int k = 2;    int x = 3;    int y = 4;    int z = 5;        SeqList_Insert(list, &i, 0);    SeqList_Insert(list, &j, 0);    SeqList_Insert(list, &k, 0);    SeqList_Insert(list, &x, 0);    SeqList_Insert(list, &y, 0);    SeqList_Insert(list, &z, 0);        SeqList_Delete(list, 5);        printf("%x\n", *(int*)(SeqList_Get(list, 4)));        SeqList_Destroy(list);        return 0;}
#ifndef __SEQLIST_H__#define __SEQLIST_H__typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);void SeqList_Destroy(SeqList* list);void SeqList_Clear(SeqList* list);int SeqList_Length(SeqList* list);int SeqList_Capacity(SeqList* list);int SeqList_Insert(SeqList* list,SeqListNode* node,int pos);SeqListNode* SeqList_Get(SeqList* list,int pos);SeqListNode* SeqList_Delete(SeqList* list,int pos); #endif

#include <stdio.h>#include <malloc.h>#include "SeqList_V2.h"typedef unsigned int TSeqListNode;typedef struct _tag_SeqList{int length;int capacity;TSeqListNode* node;}TSeqList;SeqList* SeqList_Create(int capacity){TSeqList* ret = NULL; if(capacity >= 0)ret = (TSeqList*)malloc(sizeof(TSeqList) + sizeof(TSeqListNode)*capacity);if(ret != NULL){ret->length = 0;ret->capacity = capacity;ret->node = (TSeqListNode*)(ret + 1);}return ret;}void SeqList_Destroy(SeqList* list){free(list);}void SeqList_Clear(SeqList* list){TSeqList* sList = (TSeqList*)list;if(sList != NULL){sList->length = 0;} }int SeqList_Length(SeqList* list){int ret = -1;TSeqList* sList = (TSeqList*)list;if(sList != NULL){ret = sList->length;} return ret;}int SeqList_Capacity(SeqList* list){int ret = -1;TSeqList* sList = (TSeqList*)list;if(sList != NULL){ret = sList->capacity;} return ret;}int SeqList_Insert(SeqList* list,SeqListNode* node,int pos){TSeqList* sList = (TSeqList*)list;int ret = (sList != NULL) && (node != NULL) && (pos >= 0) && (sList->length < sList->capacity);int i = 0;if(ret){if(pos > sList->length){pos = sList->length;}for(i = sList->length;i > pos;i--)sList->node[i] = sList->node[i -1];sList->node[i] = (TSeqListNode)node;//将指针赋值给整数,要类型转换 sList->length++;}return ret;}SeqListNode* SeqList_Get(SeqList* list,int pos){SeqListNode* ret = NULL;TSeqList* sList = (TSeqList*)list;if((sList != NULL) && (pos >= 0) && (pos < sList->length)){ret = (SeqListNode*)sList->node[pos];//将整数赋值给指针,也要类型转换  }return ret;}SeqListNode* SeqList_Delete(SeqList* list,int pos){SeqListNode* ret = SeqList_Get(list,pos);TSeqList* sList = (TSeqList*)list;int i = 0;if(ret != NULL){for(i = pos + 1;i < sList->length;i++){sList->node[i-1] = sList->node[i]; }sList->length--;} return ret;}


0 0
原创粉丝点击