您的位置:首页 > 理论基础 > 数据结构算法

数据结构-线性表-链表

2013-09-03 18:41 369 查看
#include <stdio h=""> #include <malloc h=""> #include "LinkList.h" typedef struct _tag_LinkList { LinkListNode header; int length; } TLinkList; LinkList* LinkList_Create() { TLinkList* ret = (TLinkList*)malloc(sizeof(TLinkList)); if(ret != NULL) { ret->header.next = NULL; ret->length = 0; } return ret; } void LinkList_Destroy(LinkList* list) { free(list); } void LinkList_Clear(LinkList* list) { TLinkList* slist = (TLinkList*)list; if(slist != NULL) { slist->header.next = NULL; slist->length = 0; } } int LinkList_Empty(LinkList* list) { TLinkList* slist = (TLinkList*)list; int ret = 0; if((slist != NULL) && (slist->length == 0)) { ret = 1; } return ret; } int LinkList_Length(LinkList* list) { TLinkList* slist = (TLinkList*)list; int ret = -1; if(slist != NULL) { ret = slist->length; } return ret; } int LinkList_Insert(LinkList* list, LinkListNode* node, int pos) { TLinkList* slist = (TLinkList*)list; int i = 0; int ret = (slist != NULL) && (0 <= pos); if(ret) { LinkListNode* current = (LinkListNode*)slist; for(i=0;(i < pos) && (current->next != NULL);i++) { current = current->next; } node->next = current->next; current->next = node; slist->length++; } return ret; } LinkListNode* LinkList_Get(LinkList* list, int pos) { TLinkList* slist = (TLinkList*)list; LinkListNode* ret = NULL; int i = 0; if((0 <= pos) && (pos < slist->length)) { LinkListNode* current = (LinkListNode*)slist; for(i=0;i<pos i="" current="current-">next; } ret = current->next; } return ret; } LinkListNode* LinkList_Delete(LinkList* list, int pos) { TLinkList* slist = (TLinkList*)list; LinkListNode* ret = NULL; int i = 0; if((slist != NULL) && (0 <= pos) && (pos < slist->length)) { LinkListNode* current = (LinkListNode*)slist; for(i=0;i<pos i="" current="current-">next; } ret = current->next; current->next = ret->next; slist->length--; } return ret; }
#include <stdio h=""> #include <stdlib h=""> #include "LinkList.h" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ typedef struct value { LinkListNode header; char c; } DataElem; int main(int argc, char *argv[]) { LinkList* list = LinkList_Create(); DataElem v1,v2,v3,v4,v5,v6; v1.c = 'a'; v2.c = 'b'; v3.c = 'c'; v4.c = 'd'; v5.c = 'e'; v6.c = 'f'; int i = 0; LinkList_Insert(list,(LinkListNode*)&v1,0); LinkList_Insert(list,(LinkListNode*)&v2,0); LinkList_Insert(list,(LinkListNode*)&v3,0); LinkList_Insert(list,(LinkListNode*)&v4,0); LinkList_Insert(list,(LinkListNode*)&v5,0); LinkList_Insert(list,(LinkListNode*)&v6,0); for(i=0;i<LinkList_Length(list);i++) { DataElem* p = (DataElem*)LinkList_Delete(list,LinkList_Length(list)-1); printf("the element is %c\n",(*p).c); } LinkList_Clear(list); printf("LinkList is Empty(%d)\n",LinkList_Empty(list)); LinkList_Destroy(list); return 0; } </linklist_length></stdlib></stdio>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: