静态链表的基本操作
来源:互联网 发布:南京高新区网络问政 编辑:程序博客网 时间:2024/05/20 21:45
0、宏定义以及静态链表结点结构体
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;#define MAXSIZE 1000#define OK 0#define error 1 typedef int Status;typedef int ElemType;//静态链表结构体 typedef struct component{ ElemType data;//数据 int cur; //游标(cursor) }component,StaticList[MAXSIZE];1、静态链表的初始化
Status InitList(StaticList space){ int i; for(i=0;i<MAXSIZE;i++) space[i].cur=i+1; space[MAXSIZE-1].cur=0;//逻辑上最后一个节点的游标是0 return OK;}
2、定位元素
//在静态链表中定位元素位序 //元素存在则返回元素的位序,不存在则返回0 Status LocateElem (StaticList S,ElemType e){ i=S[MAXSIZE-1].cur; while(i&&S[i].data!=e) i=S[i].cur; return i; }
3、向备用链表中申请空间
//跳过一个空闲分量并获取它的下标,头游标获得下一个空闲分量的下标(头游标永远是下一个空闲分量的位置)//当游标指向下一个空闲位置时,先前头游标标出的位置已经可以使用 Status Malloc_SLL(StaticList space){ int i=space[0].cur; if(i)//总会有一个时刻space[0].cur会为0 { space[0].cur=space[i].cur; } return i;}
4、获取静态链表中元素个数
int ListLength(StaticList L){ int k=MAXSIZE-1; k=L[k].cur; int i=0; while(k!=0) { i++; k=L[k].cur; } return i;}
5、插入一个元素
Status ListInsert(StaticList L, int i,ElemType e){ int j,k,i;//待使用的整型变量 k=MAXSIZE-1;//最后一个元素的下标指向逻辑顺序上第一个有元素的结点的下标 if(i)(i<1||i>ListLenth(L)+1) { return error; } j=malloc(L); if(j) { L[j].data=e; for(i=1;i<1;i++) { k=L[k].cur; }//循环结束后k的值即为插入位置前驱的下标 L[j].cur=L[k].cur; L[k].cur=j;//实现在逻辑顺序上的插入 //注意:当n为1时会引起L[MAX-1]的游标发生变化 return OK; } return error;}
6、删除一个元素
void free_SL(StaticList &L, int k) { //将下标为k的空闲结点回收到备用链表 L[k].cur=L[0].cur;//保持备用链表的逻辑结构 L[0].cur=k; } Status delete_SL(StaticList &L,int n) { int i,j,k; if(n<1||n>ListLength(L)+1) return error; k=MAXSIZE-1; for(i=0;i<n-1;i++) k=L[k].cur;//循环结束后k的值为要删除元素逻辑上的前驱的下标 j=L[k].cur;//要回收的结点的下标 L[k].cur=L[j].cur;//先把要回收的结点跳过去 free_SL(L,j); return OK; }
7、遍历线性表
int visit(ElemType e); Status Taverse(StaticList L,int(*f)(ElemType e)){ int k=MAXSIZE-1; k=L[k].cur; while(k) { f(L[k].data); k=L[k].cur; } return 0;}int visit(ElemType e){ printf("%d\n",e); return 0;}
0 0
- 静态链表的所有基本操作
- 静态链表的基本操作
- 静态链表的基本操作实现
- 静态链表的基本操作实现
- 静态链表的创建以及基本操作
- c语言实现静态链表的基本操作
- 静态链表的基本操作及其应用(实验2.3)
- 静态链表的基本操作及其应用(实验2.3)
- 静态顺序表的基本操作
- 静态顺序表的基本操作
- 静态顺序表的基本操作
- 静态单链表的基本操作
- 实现基于静态数组的顺序表的基本操作
- 顺序表的基本操作——静态实现
- 2007.08.24静态单链表的基本操作及顺序表和链表的比较
- 实验2.4 运用静态链表实现对数据的基本操作
- 数据结构笔记(三)静态链表的实现和基本操作
- 树的基本操作,静态法
- 第三周项目4——顺序表应用问题2
- mysql修改已存在的表增加ID属性为auto_increment自动增长的方法
- winsocket ------- select 模型
- iOS for循环创建UIButton及点击处理
- 你必须知道的bower私库
- 静态链表的基本操作
- ErrorCode:1068.Multipleprimarykeydefined
- 思想归纳
- My first Struct experience
- Android 混淆问题记录can't find superclass or interface
- Helix --未完待续
- js和SpringMvc灵活使用cookie
- 数据结构-二叉树的先序、中序、后序遍历
- 多进程和多线程的应用场景