/*基于sequlist.h中定义的顺序表,编写算法函数reverse(sequence_list *L),实现顺序表的就地倒置。*/
#include <stdio.h>
#include <stdlib.h>
/**********************************/
/*顺序表的头文件,文件名sequlist.h*/
/**********************************/
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int size;
}sequence_list;
/**********************************/
/*函数名称:input() */
/*函数功能:输入顺序表 */
/**********************************/
void input(sequence_list *L)
{ datatype x;
initseqlist(L);
printf("请输入一组数据,以0做为结束符:\n");
scanf("%d",&x);
while (x)
{ L->a[L->size++]=x;
scanf("%d",&x);
}
}
/**********************************/
/*函数名称:print() */
/*函数功能:输出顺序表 */
/**********************************/
void print(sequence_list *L)
{ int i;
for (i=0;i<L->size;i++)
{ printf("%5d",L->a[i]);
if ((i+1)%10==0) printf("\n");
}
printf("\n");
}
void reverse(sequence_list *L)
{
int temp;int i;
for(i=0;i<L->size/2;i++)
{
temp=L->a[i];
L->a[i]=L->a[L->size-i-1];
L->a[L->size-i-1]=temp;
}
}
int main()
{
sequence_list L; /*定义顺序表*/
input(&L); /*输入测试用例*/
print(&L); /*输出原表*/
reverse(&L); /*顺序表倒置*/
print(&L); /*输出新表*/
}
注意:线性表中元素的位序是从1开始的,而数组中元素的下标是从0开始的。
尽量别在for()中定义变量:我们很常做的一件事就是在for循环里定义一个变量并初始化(如上面定义的i,初始化为1),这个变量有可能是为了做循环限制而定义的,而此时变量只做为for循环的局部变量
循环结束后就不能再使用i这个变量。
这是C99规定了一种新的for循环语法,这种语法也是从C++借鉴的,考虑到兼容性不建议使用这种写法。摘自:http://blog.csdn.net/xiaochenhua/article/details/7031339