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

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

#include 
using namespace std;#define MAX 100typedef struct{ int date; int cur;}component, slink[100];void init(slink L){ int i; L[MAX - 1].cur = 0;//最后一个节点,相当于是一个头节点,然后,将他指向下一个的下标设为0,也就类似于头指针的初始化 for (i = 0; i < MAX - 2; i++)//将这个备用的节点进行这个初始化,然后并进行初始化形成一条链 { L[i].cur = i + 1;//当前的下标指向的是下一个节点的索引 } L[MAX - 2].cur = 0;//将最后一个的下一个设置成为零,作为后面判断这个备用的链表是不是空的一个条件}void destroy(slink L){ int i = L[MAX - 1].cur;//指向头指针的下一个索引,也就是第一个节点 L[MAX - 1].cur = 0;//将头节点设置为空 int k = L[0].cur;//得到备用链表的第一个节点的下标 L[0].cur = i;//将我们实际的链表的下标给L[0].cur,这样我们的链表我们就又连上了 int j; // 临时节点的下标,这个就是为了,获得我们实际链表的最后一个节点的下标,然后便于连接上 while (i) { j = i;//一直顺序的存下来 i = L[i].cur; } L[j].cur = k;//这样我们就连接上了}bool isEmpty(slink L){ return L[MAX - 1].cur ? false : true;//如果我们的头节点有指向的索引,那么这个头指针就不是一个空的}int len(slink L){ int i = 0;//这个为计数的变量 int j = MAX - 1;//这个当做我们头结点 while (L[j].cur)//判断这个达到了最后一个 { i++; j = L[j].cur; } return i;}bool getitem(slink L, int index,int & item){ if (index < 1 && len(L))//这个判断这个是不是输入不规范 { return false; } int i = 0;//这个当做我们的计数的一个变量 int j = MAX - 1;//这个当做是我们的一个头节点的一个指针 while (L[j].cur&&i < index)//找到这个节点 { i++; j = L[j].cur; } if (!L[j].cur || i>index)//如果发生了,这个预想不到的错误的时候,就返回这个错误的 { return false; } item = L[i].date; return true;}bool locateitem(slink L, int index, int item){ if (index<1 && index>len(L)) { return false; } int i = 0; int j = MAX - 1; while (L[j].cur&&i < index) { i++; j = L[j].cur; } if (!L[j].cur || i > index) { return false; } return item == L[j].date ? true : false;}bool pre(slink L, int cur, int & pre){ int i = L[MAX - 1].cur;//取第一个的下标 int j; while (i) { j = L[i].cur;//得到我们当前节点的下一个下标 if (j&&L[j].date == cur)//判断条件 { pre = L[i].date;//将这个值,来进行赋值 return true; } i = j; } return false;}bool next(slink L, int cur, int & next){ int i = L[MAX - 1].cur; int j; while (i) { j = L[i].cur; if (j&&L[i].date == cur)//就是判断条件,类似于这个前驱这个判断的条件 { next = L[j].date; return true; } i = j; } return false;}int malloc_item(slink L){ int i = L[0].cur;//取到备用节点的下标 if (i != 0) { L[0].cur = L[L[0].cur].cur; return i; } else { return -1; }}void free(slink L, int i){ L[i].cur = L[0].cur;//取到我们的第一个节点的这个下标 L[0].cur = i;//然后我们就连接上了}
bool  insert(slink L, int index, int item){	if (index<1 && index>len(L))	{		return false;	}	int i=MAX-1;	int num = 0;	while (i && num < index - 1)	{		num++;		i = L[i].cur;	}	if (!i || num>index - 1)	{		return false;	}	int j = malloc_item(L);	L[j].date = item;	L[j].cur = L[i].cur;	L[i].cur = j;	return true;}bool delete_item(slink L, int index, int&item){	if (index<1 && index>len(L))	{		return false;	}	int i = MAX - 1;	int j = 0;	while (L[i].cur&&j < index - 1)	{		i = L[i].cur;		j++;	}	if (!L[i].cur || j>index - 1)	{		return false;	}	item = L[L[i].cur].date;	L[i].cur = L[L[i].cur].cur;	return true;}

  

 

  

转载于:https://www.cnblogs.com/lu-007/p/9740315.html

你可能感兴趣的文章
java PDF分页打印
查看>>
数链剖分小结
查看>>
应用nslookup命令查看A记录、MX记录、CNAME记录和NS记录
查看>>
APT攻击
查看>>
做衡八的日子(转自VFleaking)
查看>>
day7.条件和循环
查看>>
(转)log4j(二)——如何控制日志信息的输出?
查看>>
JavaScript简介
查看>>
php.ini中safe_mode开启对PHP系统函数的影响
查看>>
gdb
查看>>
字符串与整数、浮点数、无符号整数之间的转换常用函数
查看>>
ubuntu清理旧内核
查看>>
有关UIImageView+AFNetworking 下载图片的线程问题
查看>>
Node之安装篇
查看>>
Android的Animation之LayoutAnimation使用方法
查看>>
二分图最大匹配算法-Hopcroft-Karp模板
查看>>
发布和订阅的删除
查看>>
如何使用qtp12 utf进行功能测试
查看>>
使用LinQ进行增删改查
查看>>
关于iOS适配问题
查看>>