开始复习简单的数据结构啦,O(∩_∩)O哈哈~
实例一、顺序表的逆置。
#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
void swap(ElemType *a, ElemType *b)
{
ElemType t = *a;
*a = *b;
*b = t;
}
void ReverseSqList(SqList *L)
{
int i = 0, j = L->length - 1;
if(j<=1)
return;
while(i<j)
{
swap(&L->data[i], &L->data[j]);
++i;
--j;
}
}
void CreateSqList(SqList *L, int sz)
{
L->length = sz;
int i = 0;
printf("input %d data : ", sz);
while(i<sz)
{
scanf("%d", &L->data[i]);
++i;
}
}
void PrintSqList(SqList *L)
{
int i = 0;
while(i<L->length)
{
printf("%d ", L->data[i]);
++i;
}
printf("\n");
}
int main()
{
SqList L;
int n;
printf("input n : ");
scanf("%d", &n);
CreateSqList(&L, n);
ReverseSqList(&L);
PrintSqList(&L);
return 0;
}
话说,那个ReverseSqList函数里面偶写成while(i++<j--)就是不行。等下偶得仔细看看(后来经过测试,原来要把i = i+1, j = j-1算出来之后才会判断 i<j所以,最后一个和第一个没有交换)。