数据结构-线性表-链表
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>
相关文章推荐
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- c语言版数据结构(奇迹冬瓜)-链表实战(2)合并两有序线性表
- 【数据结构】线性表之链表--C++语言描述
- 线性表链表表相关习题及详解(选择题) ——数据结构
- (2)数据结构——线性表(链表)实现
- 线性表12|循环链表 - 数据结构和算法17
- 线性表16:双向链表 - 数据结构和算法21
- [考研系列之数据结构]线性表之链表
- 数据结构学习-线性表-链表的代码实现
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- [SDUT](1138)数据结构上机测试2-1:单链表操作A ---链表操作(线性表)
- 数据结构-线性表-单链表
- Java数据结构-线性表之双向链表
- 数据结构复习——线性表(二)链表
- 数据结构-线性表_单链表
- 线性表12|循环链表 - 数据结构和算法17
- 线性表16:双向链表 - 数据结构和算法21
- 数据结构之 线性表---单链表操作A (删除链表中的指定元素)
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- Java数据结构-线性表之循环链表