zoukankan      html  css  js  c++  java
  • 数据结构与算法之顺序表

    顺序表

    #include <stdio.h>
    #include <malloc.h>
    #define MaxSize 100
    typedef char Elemtype;
    typedef struct list
    {
        char date[MaxSize];
        int length;
    }Sqlist;
    
    
    void Createlist(Sqlist *&L,Elemtype a[],int n)   //建立顺序表 
    {
        int i;
        L=(Sqlist *)malloc(sizeof(Sqlist));
        for(i=n-1;i>=0;i--)
            L->date[i]=a[i];
        L->length=n;
    }
    /*******************************************
    ********************************************/
    
    void Initlist(Sqlist *&L)             //初始化顺序表 
    {
        L=(Sqlist *)malloc(sizeof(Sqlist));
        L->length=0;
    }
    /*******************************************
    ********************************************/
    
    void Destroylist(Sqlist *&L)   //释放顺序表 
    {
        free(L);
    }
    /*******************************************
    ********************************************/
    bool ListEmpty(Sqlist *L)       //判空 
    {
        if(L->length!=0)
            return true;
        else
            return false;
    }
    /*******************************************
    ********************************************/
    int Listlength(Sqlist *L)   //输出长度 
    {
        printf("%d
    ",L->length); 
    }
    /*******************************************
    ********************************************/
    void Displist(Sqlist *L)          //输出顺序表 
    {
        int i;
        for(i=0;i<L->length;i++)
            printf("%c 
    ",L->date[i]);
    }
    /*******************************************
    ********************************************/
    void GetElem(Sqlist *L,int j)  //求顺序表中的某个下标的元素值 
    {
        int i;
        for(i=0;i<L->length;i++)
        {
            if(i==j-1)
                printf("%c
    ",L->date[i]);
        }
    }
    /*******************************************
    ********************************************/
    int LocateElem(Sqlist  * L,Elemtype e)//按元素值查找 
    {
    	int i=0;
    	while(i<L->length && L->date[i]!=e)
    	i++;
    	if(i>=L->length)
    	{
    		return 0;
    	}
    	else
    	{
    		printf("%d
    ",i+1);
    	}
    	
    }
    /*******************************************
    ********************************************/
    bool listinsert(Sqlist *&l,int j,Elemtype e)  //插入元素 
    {
        int i;
        if(j<1 || j>l->length+1 || l->length==MaxSize)
            return false;
        j--;
        for(i=l->length;i>j;i--)
            l->date[i]=l->date[i-1];
        l->date[j]=e;
        l->length++;
        return true;
    }
    /*******************************************
    ********************************************/
    bool Deletelement(Sqlist *&l,int j,Elemtype &e)  //删除数据元素 
    {
        int i;
        if(j<1 || j>l->length+1)
            return false;
        j--;
        e=l->date[j];
        for(i=j;i<l->length-1;i++)
            l->date[i]=l->date[i+1];
        l->length--;
        return true;
    }
    /*******************************************
    ********************************************/
    
    
    int main()
    {
        Sqlist *L;
        Elemtype a[5]={'a','b','c','d','e'};       
        Elemtype e=0;
        Initlist(L);                        //初始化顺序表L
        printf("初始化完成
    ");
     /*******************************************
    ********************************************/   
        
        Createlist(L,a,5);                  //依次插入a,b,c,d,e
        printf("插入元素后输出的顺序表为:
    ");
    /*******************************************
    ********************************************/
        Displist(L);                        //输出顺序表L
    /*******************************************
    ********************************************/
        printf("此顺序表长度为:");
        printf("%d
    ",Listlength(L));      //输出顺序表L长度
    /*******************************************
    ********************************************/ 
        if(ListEmpty(L)==1)                  //判断顺序表L是否为空
            printf("不为空
    ");
        else
            printf("为空
    ");
    /*******************************************
    ********************************************/
        printf("顺序表的第3个元素为:");   //输出顺序表的第3个元素 
        GetElem(L,3);
    /*******************************************
    ********************************************/ 
        printf("元素a的位置为:");         //查找a的位置 
        LocateElem(L,'a');
    /*******************************************
    ********************************************/ 
        listinsert(L,4,'f');            //在第4个元素位置上插入元素f 
        printf("插入元素后的顺序表为:
    ");
    /*******************************************
    ********************************************/
        Displist(L);                        //输出顺序表L
    /*******************************************
    ********************************************/
        Deletelement(L,3,e);              //删除L的第3个元素
    /*******************************************
    ********************************************/   
        printf("删除元素后的顺序表为:
    ");
        Displist(L);                       //输出顺序表L
    /*******************************************
    ********************************************/ 
        Destroylist(L);                   //释放顺序表L
        printf("释放顺序表");
        return 0;
    }
    
  • 相关阅读:
    数组从文件中读取(接上问题)
    符合json格式要求的字符串转化为json字符串
    json-lib --->入门
    XStream-->别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
    Ajax案例5-->省市联动
    Ajax案例4-->接收后台传递的XML数据
    Ajax案例3-->判断用户名是否被占用
    Ajax案例2-->POST请求
    Ajax案例1-->GET请求
    SecureCRT连接VMWare中的linux系统相关配置
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832378.html
Copyright © 2011-2022 走看看