您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

easy的顺序表

#include<stdio.h>
#include<stdlib.h>
typedef int datatype;

#define MAXSIZE 20
typedef int ElemType;      //数据元素的类型

typedef struct
{
	ElemType a[MAXSIZE];
	int length;
}SqList;                   //顺序存储的结构体类型
SqList a, b, c;

void create_list(SqList* L);
void out_list(SqList L);
void insert_sq(SqList* L, int i, ElemType e);
ElemType delete_sq(SqList* L, int i);
int locat_sq(SqList L, ElemType e);

int main()
{
	int i, k, loc;
	ElemType e, x;
	char ch;
	do
	{
		printf("\n\n");
		printf("\n          1.建立线性表");
		printf("\n          2.插入元素");
		printf("\n          3.删除元素");
		printf("\n          4.查找元素");
		printf("\n          0.结束程序运行");
		printf("\n          =====================");
		printf("\n          请输入要执行的操作:  ");
		scanf_s("%d", &k);
		switch (k)
		{
		case 1:
		{
			create_list(&a);
			out_list(a);
		}
		break;
		case 2:
		{
			printf("\n 请输入插入位置: ");
			scanf_s("%d", &i);
			printf("请输入要插入的元素值: ");
			scanf_s("%d", &e);
			insert_sq(&a, i, e);
			out_list(a);
		}
		break;
		case 3:
		{
			printf("\n请输入要删除元素的位置:%d ", a.length);
			scanf_s("%d", &i);
			x = delete_sq(&a, i);
			out_list(a);
			if (x != -1)
				printf("\n删除的元素为:%d\n", x);
			else printf("要删除的元素不存在!");
		}
		break;
		case 4:
		{
			printf("\n请输入要查找的元素值:");
			scanf_s("%d", &e);
			loc = locat_sq(a, e);
			if (loc == -1)
				printf("\n未找到指定元素!");
			else
				printf("\n已找到,元素的位置是: %d ", loc);
		}
		break;
		}/*switch*/
	} while (k != 0);
	printf("\n              按回车键,返回...\n");
	ch = getchar();
}/*main*/
void create_list(SqList* L)
{
	int i;
	printf("请定义线性表长度:");
	scanf_s("%d", &i);
	L->length = i;

	for (i = 0; i < L->length; i++)
	{
		printf("请输入第%d个数据:", i + 1);
		scanf_s("%d", &(L->a[i]));
	}
}
//输出线性表
void out_list(SqList L)
{
	for (int i = 0; i < L.length; i++)
		printf("%d\n", L.a[i]);

}

//在线性表的第i个位置插入元素e
void insert_sq(SqList* L, int i, ElemType e)
{
	int j;

	if (L->length == MAXSIZE)
		printf("表满");

	else if (i<1 || i>L->length + 1)
		printf("位置错误");

	else
	{
		for (j = L->length - 1; j > i - 2; j--)
			L->a[j + 1] = L->a[j];
		L->a[i - 1] = e;

		L->length++;
	}
}

//删除第i个元素,返回其值
ElemType delete_sq(SqList* L, int i)
{
	int e, j;

	if (L->length == 0)
	{
		e = -1;
		printf("表空");
	}

	else if (i<1 || i>L->length)
	{
		printf("位置错误");
		e = -1;
	}
	else
	{
		e = L->a[i - 1];
		for (j = i; j < L->length; j++)
			L->a[j - 1] = L->a[j];

		L->length--;
	}
	return e;
}

//查找值为e的元素,返回它的位置
int locat_sq(SqList L, ElemType e)
{
	int i;

	for (i = 0; i < L.length; i++)
		if (e == L.a[i])
			break;

	if (i == L.length)
		return -1;
	else
		return i + 1;
}

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进