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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasySwoole 中进行多带参数查询可以使用模型类和 SQL 构造器两种方式。 1. 模型类 如果你使用 EasySwoole ORM 提供的模型类,可以通过 `withWhere` 方法和 `join` 方法来实现多带参数查询。 例如,假设有两个模型类 `UserModel` 和 `OrderModel`,它们之间通过 `user_id` 字段关联,现在需要查询用户和订单中,用户状态为 1 的所有订单记录,可以这样写: ```php $userModel = new UserModel(); $orderModel = new OrderModel(); $list = $orderModel->withWhere(['user_status' => 1]) ->join($userModel, 'user_id', 'user_id') ->all(); ``` 上述代码中,`withWhere` 方法传入的数组示查询条件,`join` 方法传入的参数依次为关联的模型类、关联字段和主模型的关联字段。 2. SQL 构造器 如果你使用 SQL 构造器进行多带参数查询,可以使用 `join` 方法和 `where` 方法来实现。 例如,假设有两个 `user` 和 `order`,它们之间通过 `user_id` 字段关联,现在需要查询用户和订单中,用户状态为 1 的所有订单记录,可以这样写: ```php $db = \EasySwoole\Pool\Manager::getInstance()->get('mysql')->getObj(); $list = $db->join('order', 'user.user_id = order.user_id') ->where('user_status', 1) ->get('user, order'); \EasySwoole\Pool\Manager::getInstance()->get('mysql')->recycleObj($db); ``` 上述代码中,`join` 方法传入的参数依次为关联的名、关联条件,`where` 方法传入的参数依次为查询字段和查询值。最后调用 `get` 方法执行查询,并传入多名以实现多查询。 注意,以上代码仅供参考,具体实现方式可能需要根据你的实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值