博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态链表
阅读量:6577 次
发布时间:2019-06-24

本文共 1885 字,大约阅读时间需要 6 分钟。

在插入和删除操作时只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的

插人和删除操作需要移动大量元素的缺点

 

没有解决连续存储分配带来的表长难以确定的问题

失去了 顺序存储结构随机存取的特性

 

#include "string.h"#include "ctype.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 1000 /* 存储空间初始分配量 */typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef char ElemType; /* ElemType类型根据实际情况而定,这里假设为char */Status visit(ElemType c){printf("%c ",c);return OK;}/* 线性表的静态链表存储结构 */typedef struct {ElemType data;int cur; /* 游标(Cursor) ,为0时表示无指向 */} Component,StaticLinkList[MAXSIZE];/* 将一维数组space中各分量链成一个备用链表,space[0].cur为头指针,"0"表示空指针 */Status InitList(StaticLinkList space) {int i;for (i=0; i
ListLength(L) + 1) return ERROR; j = Malloc_SSL(L); /* 获得空闲分量的下标 */if (j) { L[j].data = e; /* 将数据赋值给此分量的data */for(l = 1; l <= i - 1; l++) /* 找到第i个元素之前的位置 */k = L[k].cur; L[j].cur = L[k].cur; /* 把第i个元素之前的cur赋值给新元素的cur */L[k].cur = j; /* 把新元素的下标赋值给第i个元素之前元素的ur */return OK; } return ERROR; }/* 删除在L中第i个数据元素 */Status ListDelete(StaticLinkList L, int i) { int j, k; if (i < 1 || i > ListLength(L)) return ERROR; k = MAXSIZE - 1; for (j = 1; j <= i - 1; j++) k = L[k].cur; j = L[k].cur; L[k].cur = L[j].cur; Free_SSL(L, j); return OK; }Status ListTraverse(StaticLinkList L){int j=0;int i=L[MAXSIZE-1].cur;while(i){visit(L[i].data);i=L[i].cur;j++;}return j;printf("\n");return OK;}int main(){StaticLinkList L;Status i;i=InitList(L);printf("初始化L后:L.length=%d\n",ListLength(L));i=ListInsert(L,1,'F');i=ListInsert(L,1,'E');i=ListInsert(L,1,'D');i=ListInsert(L,1,'B');i=ListInsert(L,1,'A');printf("\n在L的表头依次插入FEDBA后:\nL.data=");ListTraverse(L);i=ListInsert(L,3,'C');printf("\n在L的“B”与“D”之间插入“C”后:\nL.data=");ListTraverse(L);i=ListDelete(L,1);printf("\n在L的删除“A”后:\nL.data=");ListTraverse(L);printf("\n");return 0;}

 

转载于:https://www.cnblogs.com/java2016/p/7631838.html

你可能感兴趣的文章
常用的加密算法--摘要认证和签名认证的实现
查看>>
webplayer 设置加载图标和屏蔽右键
查看>>
Jolt大奖获奖图书
查看>>
drools 将添加switch支持
查看>>
android中webview空间通过Img 标签显示sd卡中 的图片
查看>>
url 的正则表达式:path-to-regexp
查看>>
ubuntu 16.04 安装PhpMyAdmin
查看>>
安卓开启多个服务
查看>>
设置分录行按钮监听事件
查看>>
C Primer Plus 第5章 运算符、表达式和语句 5.2基本运算符
查看>>
蓝牙手柄按键码
查看>>
java并发库之Executors常用的创建ExecutorService的几个方法说明
查看>>
Spring框架错误之org.springframework.beans.factory.BeanCreationException
查看>>
23种设计模式(1):单例模式
查看>>
socket 编程入门教程(五)UDP原理:4、“有连接”的UDP
查看>>
Jquery获取iframe中的元素
查看>>
Laravel 学习笔记5.3之 Query Builder 源码解析(下)
查看>>
Struts2简单入门实例
查看>>
2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
查看>>
BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
查看>>