主函数
对于线性表传线性表s的引用
int main() {
int i;
i = 0;
Seqlist s;
insert(i,&s);
reverse(&s);
printf("%d", s.num);
for (int i = 0; i < s.num; i++)
{
putchar(s.a[i]);
}
return 0;
插入函数
通过*s解说主函数传递的引用,getchar()函数会吃回车,为了方便用a作为停止循环的标志
void insert(int i,Seqlist *s) {
char e;
e=getchar();
while (e != 'a') {
s->a[i]= e;
i++;
e = getchar();
}
s->a[i+1] = '\0';
s->num= i;
}
逆置函数
比较常见的算法,但是重新写一次的时候想到微机原理里的中断向量号,将原来的数组下标与置换后的数组下标做个归纳
通过两个变量下i,j进行处理
原下标 | 处理后的下标 |
---|---|
n | 0 |
n-1 | 1 |
n-2 | 2 |
n/2 | n/2+1 |
在达到临界值后,线性表会重新倒转恢复原样,因此必须保证i>=j
void reverse(Seqlist *s) {
char t;
int j = 0;
for (int i = s->num-1; i>=j ; --i ,++j)
{
t = s->a[i];
s->a[i] = s->a[j];
s->a[j] = t;
}
}