データ構造問題003:リニアテーブルのオンサイト逆置き/反転(ANSI C)
823 ワード
1、順序表
a)配列の下付き文字で要素にアクセスする
b)ポインタによる要素へのアクセス
2、単鎖表
a)配列の下付き文字で要素にアクセスする
/*
*
*/
void reverse_sqlist( int c[], int n )
{
int i = 0, j = n - 1;
int t;
for( ; i < j; ++i, --j )
{
t = c[i];
c[i] = c[j];
c[j] = t;
}
}
b)ポインタによる要素へのアクセス
/*
*
*/
void reverse_sqlist( int c[], int n )
{
int * pl = c, * pr = c + n - 1;
int t;
while( pl < pr )
{
t = *pl;
*pl = *pr;
*pr = t;
++pl; --pr;
}
}
2、単鎖表
/*
* reverse the list in place
*/
void reverse_llist( link_list * lst )
{
node_ptr h = *lst, p = h->next, q = NULL;
if( p != NULL )
{
q = p->next;
h->next = p;
p->next = NULL;
}
p = q;
while( p != NULL )
{
q = p->next;
p->next = h->next;
h->next = p;
p = q;
}
}