链表的实现
来源:互联网 发布:erlang python 编辑:程序博客网 时间:2024/06/07 02:55
链表的实现
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>
//List链表typedef int ElementType;typedef struct _node{ ElementType data; struct _node *next;}Node, * NodePointer;typedef struct _list{ Node *header;// int capacity;//总容量// int size;//已存数据大小}List, * ListPointer;ListPointer initialize();void destroy(ListPointer listp);void makeEmpty(ListPointer listp);void insert(ListPointer listp, NodePointer nodep);void traverse(ListPointer listp);NodePointer createNodeWithElement(ElementType data){ NodePointer p = malloc(sizeof(Node)); p->data = data; return p;}ListPointer initialize(){ ListPointer listp = malloc(sizeof(List)); //NodePointer headerNode = malloc(sizeof(Node)); NodePointer headerNode = calloc(1, sizeof(Node)); headerNode->data = 0; headerNode->next = NULL; listp->header = headerNode; //listp->header = NULL; return listp;}void traverse(ListPointer listp){ NodePointer next = listp->header; if (!next) { printf("空\n"); } while (next) { printf("the element is %d\n", next->data); next = next->next; }}void insert(ListPointer listp, NodePointer nodep){ NodePointer nextP = listp->header; NodePointer tailNodeP = NULL; while (nextP) { if (!nextP->next) { tailNodeP = nextP; } nextP = nextP->next; } tailNodeP->next = nodep;}NodePointer findElement(ListPointer listp, ElementType data){ NodePointer nextp = listp->header; while (nextp) { if (nextp->data == data) { return nextp; } nextp = nextp->next; } return NULL;}bool deleteElement(ListPointer listp, ElementType data){ NodePointer nextp = listp->header; NodePointer previous = NULL; bool isFind = false; while (nextp) { if (nextp->data == data) { isFind = true; break; } previous = nextp; nextp = nextp->next; } if (isFind && previous) { NodePointer next = nextp->next; if (next) { previous->next = next; free(nextp); }else{ previous->next = NULL; free(nextp); } } return true;}void testInfoMessage(){ ListPointer listp = initialize(); traverse(listp); NodePointer nodep = createNodeWithElement(12); insert(listp, nodep); traverse(listp); nodep = createNodeWithElement(13); insert(listp, nodep); traverse(listp); nodep = createNodeWithElement(23); insert(listp, nodep); traverse(listp); nodep = createNodeWithElement(33); insert(listp, nodep); traverse(listp); //deleteElement(listp, 13); deleteElement(listp, 33); traverse(listp);}
阅读全文
0 0
- 链表的实现
- 链表的实现
- 链表的 实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 链表的实现
- 原型模式(Prototype)
- Delphi6在win10中以管理员权限打开后报 C:\Program Files (x86)\Borland\Delphi6\Projects\Bpl\xxx.bpl找不到
- Master的注册机制和状态管理详解
- Android图像处理_积木效果md
- web.xml中<security-constraint>和四种认证类型
- 链表的实现
- 设计模式学习:命令模式
- typedef定义函数指针
- 【数据结构】中缀表达式求值
- mysql 开启远程
- 同一个jsp页面实现增删改查,查询时遇到困难以及定时器遇到的情况
- 数据库(二)
- php各版本下载
- JAVA内存区域与内存溢出相关设置