静态链表

静态链表

用数组描述的链表为静态链表,也称游标实现法。

这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。

假设我们初始化完的链表为:

初始化的结构体数组大小为10

假设我们要在d后面插入e的话:

那我们要在b后面插入x呢?

我们已经看懂了插入,再来看一下删除操作,把c删掉:

下面为静态链表主要的一些代码:

#include<stdio.h>
#define MAX_SIZE 10
typedef int ElemType;
typedef struct Node{
	ElemType e;
	int cur;
}StaticList[MAX_SIZE];
void init(StaticList L){
	for(int i=0;i<MAX_SIZE;i++){
		L[i].cur=i+1;
		L[i].e=' ';
	}
	char c[]={'A','B','C','D','E','F'};
	for(int i=0;i<6;i++){
		if(i==0){
			int index=L[0].cur;
			L[index].e=c[i];
			L[0].cur=L[index].cur;
			L[index].cur=0;
			L[MAX_SIZE-1].cur=index;
		}else{
			int index=L[0].cur;
			L[index].e=c[i];
			L[0].cur=L[index].cur;
			L[index-1].cur=index;
			L[index].cur=0;
		}
	}
	L[0].e++;//代表长度
}
void show(StaticList L){
	for(int i=0;i<MAX_SIZE;i++){
		printf("%3d",L[i].cur);//游标
	}
	printf("\n");
	for(int i=0;i<MAX_SIZE;i++){
		printf("%3c",L[i].e);//元素
	}
	printf("\n");
	for(int i=0;i<MAX_SIZE;i++){
		printf("%3d",i);//角标
	}
	printf("\n");
}
void print(StaticList L){
	int k=MAX_SIZE-1;
	while(k!=0){
		k=L[k].cur;
		if(k==0){
			break;
		}else{
			printf("%c",L[k].e);
		}
	}
	printf("\n");
}
void insert(StaticList L,int position,ElemType e){
	int k=MAX_SIZE-1;
	for(int i=1;i<=position-1;i++){
		k=L[k].cur;
	}
	int index=L[0].cur;
	L[index].e=e;
	L[0].cur=L[index].cur;
	L[index].cur=L[k].cur;
	L[k].cur=index;
}
void delete(StaticList L,int position){
	int k=MAX_SIZE-1;
	for(int i=1;i<position;i++){
		k=L[k].cur;
	}
	int index=L[k].cur;
	L[k].cur=L[index].cur;
	L[index].cur=L[0].cur;
	L[0].cur=index;
	L[index].e=' ';
}
void main(){
	StaticList L;//代表一个结构体数组
	init(L);
	show(L);
	printf("打印:\n");
	print(L);
	insert(L,4,'G');
	show(L);
	printf("打印:\n");
	print(L);
	delete(L,3);
	show(L);
	printf("打印:\n");
	print(L);
}

运行结果为:

该代码和运行结果与我之前的例子不是同一种问题!

 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4404次浏览 77人参与
# 找AI工作可以去哪些公司? #
9629次浏览 269人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15512次浏览 225人参与
# 你的实习产出是真实的还是包装的? #
20546次浏览 343人参与
# AI面会问哪些问题? #
28547次浏览 587人参与
# 春招至今,你的战绩如何? #
66936次浏览 589人参与
# 厦门银行科技岗值不值得投 #
8160次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
9466次浏览 343人参与
# 中国电信笔试 #
32177次浏览 295人参与
# 你做过最难的笔试是哪家公司 #
34871次浏览 267人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
341084次浏览 2175人参与
# 金三银四,你的春招进行到哪个阶段了? #
22420次浏览 284人参与
# 同bg的你秋招战况如何? #
212255次浏览 1121人参与
# 哪些公司真双非友好? #
69770次浏览 289人参与
# 如何准备秋招 #
78321次浏览 868人参与
# 阿里笔试 #
179183次浏览 1318人参与
# 机械人避雷的岗位/公司 #
62716次浏览 393人参与
# 小马智行求职进展汇总 #
25149次浏览 80人参与
# 第一份工作一定要去大厂吗 #
15026次浏览 122人参与
# 担心入职之后被发现很菜怎么办 #
291412次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26300次浏览 310人参与
# 应届生第一份工资要多少合适 #
20712次浏览 86人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务