【数据结构】顺序存储单链表
来源:互联网 发布:tcl智能电视直播软件 编辑:程序博客网 时间:2024/06/07 08:58
数据结构之单链表的顺序存储实现
闲来无事,回顾下以前学过的数据结构,写个玩玩,理论的东西就不多说了,网上一搜一大堆;
重要的是需要掌握这种数据结构的思想,整个数据结构这门课最重要的也是思想!
下面是代码:
//====================================================================== // // Copyright (C) 2014-2015 SCOTT // All rights reserved // // filename: SeqList.c// description: a demo to display SeqList// // created by SCOTT at 01/26/2015 // http://blog.csdn.net/scottly1// //====================================================================== #include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>#define TRUE1#define FALSE0#define MAX_SIZE1000typedef int Type;typedef int Bool;typedef struct _tag_list{Type *elem;int length;// current lengthint size;// max length}LIST, *PLIST;Bool createList(LIST *list, int len){if(len > MAX_SIZE || len <= 0 ){printf("### OVER MAX_LEN!\n");return FALSE;}list->elem = (Type *)malloc(len * sizeof(Type));if(NULL == list){printf("### createList Create Error!\n");return FALSE;}else{list->length = 0;list->size = MAX_SIZE;}printf("### createList Create list Success!\n");return TRUE;}Bool clearList(LIST *list){if(NULL == list){printf("### clearList List Error!\n");return FALSE;}Type *p = list->elem;for(; p < list->elem + list->size; ++p){memset(p, 0, sizeof(*p));}return TRUE;}Bool displayList(LIST *list){if(NULL == list){printf("### displayList List Error!\n");return FALSE;}int i = 0;Type *p = list->elem;for(; p < list->elem + list->length; ++p, i++){printf("list->elem[%d] = %d\n", i, *p);}return TRUE;}Bool insertList(LIST *list, int flag, Type elem){int i = 0;if(NULL == list || flag < 0 || flag >= list->size){printf("### insertList List Error!\n");return FALSE;}if(list->length + 1 > list->size){printf("### List Full!\n");return FALSE;}flag = flag>list->length?list->length:flag;for(i=list->length; i>flag; --i){list->elem[i] = list->elem[i-1];}list->elem[i] = elem;++list->length;return TRUE;}Bool deleteList(LIST *list, int flag, Type *elem){int i = 0;if(NULL == list || flag < 0 || flag >= list->size){printf("### deleteList List Error!\n");return FALSE;}if(list->length - 1 < 0 ){printf("### List Empty!\n");return FALSE;}flag = flag>list->length?list->length:flag;*elem = list->elem[flag];for(i=flag; i<list->length; ++i){list->elem[i] = list->elem[i+1];}--list->length;return TRUE;}Bool mergeList(LIST *src1, LIST *src2, LIST *dst){int i = 0;Type *pA, *pB, *pC;Type *pA_last, *pB_last, *pC_last;if(NULL == src1 || NULL == src2 || NULL == dst){printf("### displayList List Error!\n");return FALSE;}pA = src1->elem; pA_last = src1->elem + src1->length;pB = src2->elem; pB_last = src2->elem + src2->length;pC = dst->elem;while(pA < pA_last && pB < pB_last){if(*pA >= *pB)*pC++ = *pB++;else*pC++ = *pA++;++dst->length;}while(pA < pA_last){*pC++ = *pA++;++dst->length;}while(pB < pB_last){*pC++ = *pB++;++dst->length;}return TRUE;}int main(int argc, char *argv[]){LIST list1;LIST list2;LIST dst;Type elem1 = 10;Type elem2 = 30;createList(&list1, 5);createList(&list2, 5);createList(&dst, 10);printf("===================\n");insertList(&list1, 0, elem1);insertList(&list1, 1, elem1+1);insertList(&list1, 2, elem1+2);insertList(&list1, 3, elem1+4);insertList(&list1, 4, 100);displayList(&list1);printf("===================\n");insertList(&list2, 0, elem2+3);insertList(&list2, 1, elem2+4);insertList(&list2, 2, elem2+5);insertList(&list2, 3, elem2+6);insertList(&list2, 4, elem2+7);displayList(&list2);printf("===================\n");mergeList(&list1, &list2, &dst);displayList(&dst);printf("\n\n");return 0;}
注:原创文章,转载请注明出处:http://blog.csdn.net/scottly1/article/details/43154589
1 0
- 【数据结构】顺序存储单链表
- 数据结构---栈---顺序存储
- 数据结构之顺序存储
- 【数据结构】字符串顺序存储结构
- 数据结构--线性表顺序存储
- 数据结构的顺序存储结构
- 数据结构:栈的顺序存储
- 数据结构---线性表---顺序存储
- 数据结构-栈的顺序存储
- 数据结构-循环队列顺序存储
- 数据结构-栈的顺序存储
- 数据结构队列的顺序存储
- 数据结构 栈的顺序存储结构
- 数据结构之线性表--顺序存储
- 常用数据结构之顺序存储的栈
- 数据结构存储的顺序和链式对比
- 【数据结构】线性表的顺序存储结构
- 数据结构三栈的顺序存储结构
- python os.path模块
- h。323运行流程
- Android Contacts的使用(三)
- C++指针的基础介绍
- uva 10054 The Necklace(欧拉回路)
- 【数据结构】顺序存储单链表
- 关于微信
- R语言学习(持续更新中)
- AsyncTask和Handler的优缺点比较
- 使用对话框实现类似MFC浮动工具条
- 分享一个Android和java调用RESTful Web服务的利器Resting
- GTK进阶学习:设置窗口背景图(可指定其大小)
- zookeeper客户端 和服务器连接时版本问题
- web-过滤器