数据结构例题2:交换逆转

         通过建立线性表,对其使用静态分配赋值后,讨论如何对线性表中的两个元素如何交换位置,其结果是显然的。

void  swap (ElemType* a, ElemType* b)
{
	ElemType c = *a;
	*a = *b;
	*b = c;
}

        C语言函数不会对数值进行更改,故使用指针,指针指向变量的存储单元,通过直接更改存储单元内的数据来达到数据交换的目的。 

        转置的方法是将第一个与最后一个,第二个与倒数第二个以此类推交换位置直到中间,故for循环仅执行L->length/2次,如3个长度的线性表仅需换第一个和最后一个位置就完成了转置,具体如下。

123
321

        完整代码如下,可直接复制到visio中运行。

 

#include <stdio.h>
#include <stdlib.h>

#define MaxSize 10
typedef int ElemType;

typedef struct
{
	ElemType value[MaxSize];
	int length;
}SqlList;

void  swap (ElemType* a, ElemType* b)
{
	ElemType c = *a;
	*a = *b;
	*b = c;
}

void reverse(SqlList *L)
{
	for (int i = 0;i < L->length / 2;i++)
	{
		swap(&L->value[i],&L->value[L->length-1-i]);
	}
}

int main(void)
{
	SqlList L;
	L.length = 10;
	int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	for (int i=0;i<L.length;i++)
	{
		L.value[i] = a[i];
	}
	reverse(&L);
	for (int i = 0;i < L.length;i++)
	{
		printf("%d",L.value[i]);
	}
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值