掌握数据结构是编写出地道、复杂程序的基础。很难想象一个不懂数据结构的人,或是不够精通数据结构的人会是一个出色的程序员。因此多用数据结构的知识编写一些程序对培养人们的编程水平以及用计算机处理复杂问题的能力都大有裨益。本章将通过一些具体的实例介绍数据结构在程序设计中的应用。
题目要求:
编写一个函数,实现顺序表的就地逆置,也就是说利用原表的存储空间将顺序表(a1,a2,…an)逆置为(an,an-1,…a1)。
题目分析:
本题主要考查顺序表线性结构的应用。顺序表的基本操作包括顺序表的创建,插入数据,删除数据等。但是在实际的应用中,对顺序表的操作并不仅限于上述这几种操作。因此学习顺序表也不能仅限于学懂前面所讲的几种操作而已,应当灵活掌握顺序表结构,并能够熟练地操纵顺序表。
#include "stdio.h"# define MAXSIZE 10 /*静态顺序表的最大空间*/typedef struct{ int * base; int length;}sqlist ; /*定义一个顺序表类型*/reverseSQ(sqlist *l){/*实现顺序表l的就地逆置*/ int low = 0 , high = l->length - 1;/*low和high分别指向顺序表的首尾*/ int buf , i; for(i=0;ilength/2;i++) { /*循环length/2次,实现数据逆置*/ buf = l->base[low] ; l->base[low] = l->base[high]; l->base[high] = buf; low++; high--; }}main(){ sqlist l; int a , i = 0; /*创建一个顺序表*/ l.base = (int *)malloc(sizeof(int)*MAXSIZE); l.length = 0; /*输入数据*/ printf("Please input below 10 integer into the sqlist
") ; printf("Type -1 for stopping input
"); scanf("%d",&a); while(a != -1 && i<=9) { l.base[i] = a; l.length++;i++;if(i <10){scanf("%d",&a);} } /*输出原顺序表中的数据*/ printf("The contents of the sqlist are
"); for(i=0;i
运行结果:

运行结果