顺序表的创建和翻转 C语言实现

 要把一个顺序表就地逆置(辅助空间为o(1)),可以将表中的开始结点与终端结点互换,第二个结点和倒数第二个结点互换,如此反复,就可以将整个表逆置了。

#include<stdio.h>
#define ListSize 20
typedef int DataType;
typedef struct{
	DataType data[ListSize];
	int length;
}Seqlist;

Seqlist CreateList(Seqlist L)  //结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数,不过可以return返回它
{
    int n;
    L.length=0;
    printf("输入顺序表的数据:输入-1结束\n");
	while(1)
    {
        scanf("%d",&n);
        if(n==-1) break;
        L.data[L.length]=n;
        L.length++;
    }
    return L;
}

void ReverseList(Seqlist *L)  //结构体指针变量作为函数的参数,修改后的结构体成员的值能返回到主调函数,相当于传地址进来直接修改
{
	DataType temp;
	int i;
	for(i=0;i<(L->length)/2;i++)
	{
		temp=L->data[i];
		L->data[i]=L->data[L->length-1-i];
		L->data[L->length-1-i]=temp;
	}
}

int main()
{
    int i,n;
    Seqlist mylist;
    mylist=CreateList(mylist);
    ReverseList(&mylist);
	for(i=0;i<mylist.length;i++)
	{
		printf("%d,",mylist.data[i]);
	}
	printf("\n");
	printf("长度:%d,",mylist.length);
}

猜你喜欢

转载自blog.csdn.net/weixin_38345919/article/details/81193140