数据结构-线性表的顺序存储结构逆置

1.主要的操作是:对顺序存储的线性表进行逆置操作。
2.空表为0时,或超过100个元素时,不执行程序。
自学c语言,有任何问题,还望大佬们指教。
以下是代码:

#include 
#include
#define maxsize	100 //最长的长度为100

typedef int elemtype; //定义线性表

typedef struct  //结构体的定义
{
    elemtype date[maxsize]; //表示线性表存储元素的最大长度
    int length;    //表示线性表实际的长度
}sqlist;

void creatlist(sqlist *l) //这里*l用来表示传入线性表sqlist的指针,后续l就代表了sqlist.
{
    int len;
    int i;
    printf("请输入你想要的线性表长度:\n");
    scanf("%d",&len);
    if(len==0||len>maxsize)
    {
        printf("你输入的长度有误\n");
        return;
    }
    l->length=len;
    printf("请输出%d长度线性表的每一个值\n",len);
    for(i=0;i<len;i++) //从0开始,不需要len+1.
    {
        scanf("%d",&l->date[i]);
    }
    
}
void print(sqlist *l) //这里是输出线性表数据给大家看的
{
    int i,n;
    n=l->length;
    if(n==0||l->length>maxsize)
    {
        return;
    }
    printf("线性表目前包含的元素为:");
    for(i=0;i<n;i++)
    {
        printf("%d",l->date[i]);
        printf(" ");
    }
    printf("\n");
}
void reverse(sqlist *l) //逆置
{
    int i,j; //1234逆置为4321,1和4交换,2和3交换 思路是i++ j--
    if(l->length==0||l->length>maxsize)
     {
         return;
     }
    for(i=0,j=l->length-1;i<j;i++,j--)//为什么要length-1?因为数组date里面是从0开始的,最大下标为9.
    {
        int temp;
        temp=l->date[i];
        l->date[i]=l->date[j];
        l->date[j]=temp;
    }
    
}
//下面是主体函数
int main(int argc, const char * argv[]) {
    sqlist l;
    l.length=0;
    creatlist(&l);
    print(&l);
    reverse(&l);
    print(&l);
    return 0;
}

你可能感兴趣的:(自学数据结构,数据结构,c语言)