线性表的就地逆置

试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1,a2,…,an)逆置为(an,an-1,…,a1)

(1) 以一维数组作存储结构。

(2) 以单链表作存储结构。

第一行输入线性表元素个数elenum(0

第二行输入elenum个数,作为线性表中的元素(a1,a2,…,an)。

分两行分别输出要求(1)和要求(2的线性表逆置结果(an,an-1,…,a1)

5

2 5 3 7 15

15 7 3 5 2

15 7 3 5 2


#include 
#include 
#include 
typedef struct node
    {
        int num;
        struct node *next;
    }node,*linklist;
void create(linklist l,int A[],int n)
    {
        int i;
        linklist p,q;
        p=l;
        for(i=0;inum=A[i];
            q->next=NULL;
            p->next=q;
            p=q;
        }
    }
void reverse(linklist l)
    {
        node *p,*q;
        p=l->next;
        l->next=NULL;
        while(p){
        q=p->next;
        p->next=l->next;
        l->next=p;
        p=q;}
    }
void shu(linklist l)
    {
        node *p=l;
        while(p->next)
        {
            p=p->next;
            printf("%d ",p->num);
        }
    }
int main()
{
    int A[1000],B[1000];
    int i,n,j;
    scanf("%d\n",&n);
    for(i=0;i

你可能感兴趣的:(线性表的就地逆置)