逆置线性表(线性表)

逆置线性表(线性表)

时间: 1ms        内存:128M

描述:

(线性表)请写一个算法将顺序存储结构的线性表(a1...an)逆置为(an...a1)。

输入:

输入长度n:5

输入数据:1 2 3 4 5

输出:

5 4 3 2 1

示例输入:

5
7 8 9 10 11 

示例输出:

11 10 9 8 7 

提示:

参考答案(内存最优[748]):

#include "stdio.h"
#define   maxsize   500
typedef   int    elemtype;
typedef   struct
{elemtype    data[maxsize];
 int  last;
}sequenlist;
void   converse(sequenlist   *L)
{int  i;
 elemtype   x;
 for(i=0;i<L->last/2;i++)
 {x=L->data[i];
  L->data[i]=L->data[L->last-1-i];
  L->data[L->last-1-i]=x;
 }
}
main()
{int  i;
 sequenlist   x,*L;
 L=&x;
 scanf("%d",&L->last);
 for(i=0;i<L->last;i++)
    scanf("%d",&(L->data[i]));
 converse(L);
 for(i=0;i<L->last;i++)
    printf("%d ",L->data[i]);
}

参考答案(时间最优[0]):

#include<iostream>

using namespace std;

typedef struct node
{
	int data;
	node *next;
}sqlist;

void CreateList(sqlist *&L)
{
	L = new sqlist();
	L->next = NULL;
}

int main()
{
	sqlist *L,*q;
	CreateList(L);
	q = L;
	int N;
	cin>>N;
	int *a = new int[N];
	int temp;
	for(int i=0; i<N; i++)
	{
		cin>>temp;
		sqlist *p =  new sqlist();
		p->data = temp;
		q->next = p;
		p->next = NULL;
		q = p;
	}
	q = L->next;
	int n = 0;
	while(q!=NULL)
	{
		a[n]=q->data;
		q = q->next;
		n++;
	}
	for(int m=N-1; m>=0; m--)
		cout<<a[m]<<" ";
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注