有关顺序表的一部分函数

来源:互联网 发布:液压系统仿真软件 编辑:程序博客网 时间:2024/05/22 14:29
#include <iostream>#include <cstdio>#include <malloc.h>using namespace std;typedef struct{    int *elem;    int length;    int listsize;}SqList;int InitList(SqList &L)//初始化{    L.elem=(int*)malloc(100*sizeof(int));    if(!L.elem) exit(-1);    L.length=0;    L.listsize=100;}int ListCreat(SqList &L)//创建{    int n;    scanf("%d",&n);    for(int i=0;i<n;i++){        int t;        scanf("%d",&L.elem[i]);        L.length++;    }}int ListInsert(SqList &L,int n)//插入{    if(L.length>=L.listsize){        L.elem=(int*)realloc(L.elem,(L.listsize+10)*sizeof(int));        if(!L.elem) exit(-1);        L.listsize+=10;    }    L.elem[L.length]=n;    L.length++;}int print_List(SqList L)//输出{    for(int i=0;i<L.length;i++){        if(i==0) printf("%d",L.elem[i]);        else printf(" %d",L.elem[i]);    }    printf("\n");}int ListReverse_all(SqList &L)//完全逆序{    for(int i=0;i<L.length/2;i++){        swap(L.elem[i],L.elem[L.length-i-1]);    }}int Rotate_Left_List(SqList &L,int n)//循环左移{    if(n>=L.length) n=L.length;    for(int i=n;i<L.length;i++){        if(i==n) printf("%d",L.elem[i]);        else printf(" %d",L.elem[i]);    }    for(int i=0;i<n;i++){        printf(" %d",L.elem[i]);    }    printf("\n");}int Location_List(SqList L,int n)//查找地址{    for(int i=0;i<L.length;i++){        if(L.elem[i]==n){            printf("%d的地址为:%d\n",n,i+1);            return 0;        }    }    printf("在L中未找到n元素\n");}int find_List(SqList L,int n)//根据下标找到值{    if(n>=L.length||n<=0) printf("输入越界\n");    else{        printf("%d\n",L.elem[n-1]);    }}int main(){    SqList L;    InitList(L);    ListCreat(L);//创建和输入数组    int n;    scanf("%d",&n);    for(int i=0;i<n;i++){        int t;        scanf("%d",&t);        ListInsert(L,t);    }//插入n个数    int m;    scanf("%d",&m);    Rotate_Left_List(L,m);//数组循环左移    ListReverse_all(L);    print_List(L);//数组全部逆序    int l;    scanf("%d",&l);    Location_List(L,l);//查找地址    int k;    scanf("%d",&k);    find_List(L,k);//根据下标找到值}

原创粉丝点击