数组简单实现单向链表
2016-03-20 17:34
381 查看
#include "stdio.h" #include "stdlib.h" #define ElementType int #define MAX_SIZE 20 typedef struct { ElementType data[MAX_SIZE]; int last; }List; typedef List * Ptrl; /** * 初始化一个链表 */ Ptrl MakeEmpty() { Ptrl list = (Ptrl)malloc(sizeof(list)); list->last = -1; return list; } /** * 查找元素的位置 * 返回该位置的索引 */ int Find(ElementType x, Ptrl list) { int index = 0; while ((index <= list->last)&&(list->data[index] != x)) index ++; if (index > list->last) return -1; return index; } /** * 添加元素 */ int Add(ElementType x, Ptrl list) { if (list->last == MAX_SIZE - 1) return -1; list->data[list->last + 1] = x; list->last ++; return 0; } /** * 插入元素 */ int Insert(ElementType x, int index, Ptrl list) { int i; if (list->last == MAX_SIZE - 1) return -1; if (index > list->last) return -1; for (i = list->last; i >= index; i -- ) { list->data[i + 1] = list->data[i]; } list->data[index] = x; list->last ++; return 0; } /** * 删除元素 */ int Delete (ElementType x, Ptrl list) { int index = 0; int i = 0; while (index <= list->last && list->data[index] != x) index ++; if (index > list->last) //找不到 return -1; for (i = index; i < list->last; i ++) { list->data[i] = list->data[i + 1]; } list->last --; return 0; } /** * 查询链表的长度 */ int Length(Ptrl list) { return list->last + 1; } /** * 打印该链表信息 */ void Print(Ptrl list){ int index = 0; printf("length:%d\n",Length(list)); for (index = 0; index <= list->last; index ++) { printf("%d ",list->data[index]); } printf("\n"); }
相关文章推荐
- PHP之页面跳转
- Ionic+Cordova开发环境搭建
- iBatis学习(二)
- WEBLOGIC 部署jar包冲突
- (未完占坑)flask 电子邮件
- 猎豹MFC--消息映射
- iOS 对象的归档
- LeetCode – 4Sum (Java)题解
- 配置mysql5.5主从服务器
- Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)
- elecworks 图框管理器
- 用来减少SQL的查询类库
- 关于Android中so的符号表导出以及C++的符号改编规则
- need improve 43. Multiply Strings
- java实现DES数据加密与解密
- 类似C语言格式化输出
- C++箴言:理解typename的两个含义
- 【Heaven Cow与God Bull】题解
- 5-36 复数四则运算
- 工作两年后,我们需要重新思考生活,工作和未来的方向