用数据结构(顺序表)实现一组数的倒置

如题所述

第1个回答  2011-04-18
用数组存储顺序表的元素,假设顺序表元素的数据类型为int。
reverse实现将指定顺序表arr(长度为len)倒置,即第1个元素与最后1个元素互换、第2个元素与倒数第2个元素互换......

void reverse(int arr[], int len)
{
int i;
int temp;
for(i=0; i<len/2; i++)
{
temp = arr[i];
arr[i] = arr[len-i-1];
arr[len-i-1] = temp;
}
}
第2个回答  2011-04-18
用顺序表构造一个栈然后用栈就可以完成一组数的倒置追问

可以给我一个完整的程序不???我用过这种方法,可是编译不出来,我也不知道那里错了!!!是用顺序表对输入一组数进行倒置的程序!!急求!!!帮个忙!!谢谢!!!

追答

假设用数组A[ ]来存储这一组数
算法如下:
#include
#include
#include

define MaxSize 100

int main()
{
typedef struct {
int data[MaxSize];
int top;
}SqStack;
int A[MaxSize];
SqStack *s;

void initStack(SqStack *&s)
{
s=(SqStack *)malloc(sizeof(SqStack))
s->top=-1;
}
int push(SqStack *&s, int x)
{
if(s->top==MaxSize)
return 0;
s->top++;
s->data[s->top]=x;
return 1;
}
pop(SqStack *&s,int y)
{
if(s->top==-1)
return 0;
y=s->data[s->top];
s->top-- ;
return 1;
}
for(i=0;i<n;i++)
scanf("%d",A[i]);
initStack(s);/*其中s表示空栈*/
for(i=0;i<n;i++)
push(s,A[i]);
for(i=0;i<n;i++)
{
pop(s,e);
printf("%d",e);
}
system("pause");
return 1;
}
你自己试试吧 我没运行不太清楚可不可行。

本回答被提问者采纳
相似回答