@【数据结构】(顺序表)

@【数据结构】(顺序表)

定义顺序表,获得顺序表长度,第i个元素,元素X的位置,删除元素Y

#include<stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;

#define MaxSize 100
typedef int ElemType;		//假设顺序表中所有元素为int类型
typedef struct
{
	ElemType data[MaxSize];	//存放顺序表的元素
	int length;			   //顺序表的实际长度
} SqList;
void InitList(SqList &L)   //由于L要回传给实参,所以用引用类型
{

	L.length = 0;

}
void DestroyList(SqList L)
{
}
int GetLength(SqList L)
{
	return L.length;
}
int GetElem(SqList L, int i, ElemType &e)
{
	if (i<1 || i>L.length)   //无效参数
		return 0;
	else { e = L.data[i - 1]; return 1; }  //取元素值并返回1

}
int Locate(SqList L, ElemType x)
{
	int i = 0;
	while (i < L.length&&L.data[i] != x)
		i++;
	if (i >= L.length) return 0;   //未找到
	else return (i+1);
}
int InsElem(SqList &L, ElemType x, int i)  //指定位置插入
{
	int j;
	if (i<1 || i>L.length+1)
		return 0;
	for (j = L.length; j > i; j--)   //位置i后的元素后移一位
		L.data[j] = L.data[j - 1];
	L.data[i-1] = x;
	L.length++;
	return 1;
}
int DelElem(SqList &L, int i)  //删除
{
	int j;
	if (i<1 || i>L.length)
		return 0;
	for (j = i; j < L.length; j++)   //位置i后的元素前移一位
		L.data[j - 1] = L.data[j];
	L.length--;
	return 1;
}
void DispList(SqList L)  //输出
{
	int i;
	for ( i = 0; i < L.length; i++)
		cout << L.data[i] << "  ";
	cout << endl;
}
void main()
{
	int i;
	ElemType e;
	SqList L;
	InitList(L);
	InsElem(L, 3, 1);
	InsElem(L, 5, 2);
	InsElem(L, 7, 3);
	InsElem(L, 9, 4);
	InsElem(L, 0, 5);
	cout << "线性表:";
	DispList(L);
	cout << "线性表长度为:" << GetLength(L) << endl;
	
	i = 4; GetElem(L, i, e);
	cout << "第4个元素为:" <<e<< endl;

	e = 7;
	cout << "线性表中元素7位于:" << Locate(L, 7) << endl;

	int j = 2;
	cout << "删除第二个元素" << endl;
	DelElem(L, 2);
	DispList(L);
	cout << endl;
	system("pause");
}

测试示例:
在这里插入图片描述

发布了20 篇原创文章 · 获赞 1 · 访问量 84

猜你喜欢

转载自blog.csdn.net/gsgs1234/article/details/104843741