静态链表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态链表相关的知识,希望对你有一定的参考价值。

#include "stdafx.h"
#include <malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int length;
} SqList;
// 一维数组即是顺序表
void InitList(SqList * &L)
{
	L = (SqList *)malloc(sizeof(SqList));
	L->length = 0;
}

void DestroyList(SqList *L)
// 释放顺序列表
{
	free(L);
}

int ListEmpty(SqList *L)
{
	return (L->length == 0);
}

int ListLength(SqList *L)
{
	return L->length;
}

void DispList(SqList *L)
{
	int i;
	if (ListEmpty(L))return;
	for (i = 0; i < L->length; i++)
	{
		printf_s("%c", L->data[i]);
	}
	printf_s("\n");
}
int GetElem(SqList *L, int i, ElemType &e)
// 获取顺序表第i个元素
{
	if (i<1 || i>L->length)
	{
		return 0;
	}
	e = L->data[i - 1];
	return 1;
}
int LocateElem(SqList *L, ElemType e)
// 在顺序表中查找元素e
{
	int i = 0;
	while (i<L->length && L->data[i]!=e)
	{
		i++;
	}
	// 
	if (i >= L->length)
	{
		return 0;
	}
	return i+1;
}
int ListInsert(SqList *&L, int i, ElemType e)
// 在顺序列表L中第i个位置上插入元素e
{
	int j;
	if (i<1 || i>L->length + 1)
	{
		return 0;
	}
	i--;
	for (j = L->length; j < i; j--)
	{
		L->data[j] = L->data[j - 1];
	}
	L->data[i] = e;
	L->length++;
	return 1;
}
int ListDelete(SqList *&L, int i, ElemType &e)
// 在顺序列表中删除第i个元素
{
	int j;
	if (i < 1 || i>L->length)
	{
		return 0;
	}
	i--;
	e = L->data[i];
	for (j = i; j < L->length - 1; j++)
	{
		L->data[j] = L->data[j + 1];
	}
	L->length--;
	return 1;
}

  

以上是关于静态链表的主要内容,如果未能解决你的问题,请参考以下文章

静态链表代码

片段内部静态类和gradle问题

数据结构 -- 静态链表代码实现(总结)

链式存储结构之静态链表

静态链表过程演示及代码实现(A - B) U (B - A)

C/C++语言数据结构快速入门(代码解析+内容解析)链表(单链表,双链表,循环链表,静态链表)