首页 > 代码库 > 静态链表

静态链表

#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;
}

  

静态链表