zoukankan      html  css  js  c++  java
  • 数据结构线性表源码

    蒟蒻的我,今天折腾了3个小时,终于把数据结构的线性表源码,用C语言写出来了,qwq

    数据结构线性表源码

    在这里插入图片描述

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    
    #define cmax 30
    
    struct Sqlist
    {
    	int data[cmax];
    	int length;
    };
    void AscendingSequence(struct Sqlist *L)
    {
        int tmp;
        if(L->length<1||L->length>cmax)
        {
            printf("ascending sequence fail
    ");
            return ;
        }
        else
        {
            int i=0,j=0;
            for(i=0;i<L->length-1;i++)
            {
                for(j=0;j<L->length-(i+1);j++)
                if(L->data[j]>L->data[j+1])
                {
                    tmp=L->data[j+1];
                    L->data[j+1]=L->data[j];
                    L->data[j]=tmp;
                }
            }
            printf("Celebrate You,ascending sequence OK!
    ");
        }
    }
    
    void DescendingOrder(struct Sqlist *L)
    {
        int tmp;
        if(L->length<1||L->length>cmax)
        {
            printf("Descending Order fail
    ");
            return ;
        }
        else
        {
            int i=0,j=0;
            for(i=0;i<L->length-1;i++)
            {
                for(j=0;j<L->length-(i+1);j++)
                if(L->data[j]<L->data[j+1])
                {
                    tmp=L->data[j+1];
                    L->data[j+1]=L->data[j];
                    L->data[j]=tmp;
                }
            }
            printf("Celebrate You,Descending Order OK!
    ");
        }
    }
    
    void Initlist(struct Sqlist *L)
    {
    	L->length=0;
    	memset(L->data,0,sizeof(L->data));
    }
    
    int InsertSqlist(struct Sqlist *L,int i,int val)
    {
    	if(i<1||i>L->length+1||L->length==cmax)
    	{
    		printf("insert fail
    ");
    		return -1;
    	}
    	else
    	{
    		int j=L->length-1;
    		for(;j>=i-1;j--)
    		{
    			L->data[j+1]=L->data[j];
    		}
    		L->data[i-1]=val;
    		L->length++;
    		return 1;
    	}
    }
    
    void ShowSqlist(struct Sqlist L)
    {
    	int j=0;
    	for(;j<L.length;j++)
    	printf("%d ",L.data[j]);
    	printf("
    ");
    	return ;
    }
    
    int DeleteSqlist(struct Sqlist *L,int i)
    {
    	if(i<1||i>L->length||L->length==0)
    	{
    		printf("delete fail
    ");
    		return -1;
    	}
    	else
    	{
    		int j=i-1;
    		for(;j<L->length-1;j++)
    		L->data[j]=L->data[j+1];
    		L->length--;
    		printf("Celebrate You,delete OK!
    ");
    		return 1;
    	}
    }
    
    int GetSqlist(struct Sqlist L,int i)
    {
    	return L.data[i-1];
    }
    
    int main()
    {
    	struct Sqlist L;
    	Initlist(&L);
    	char s[50];
    	int t,flag=0;
    	printf("请输入一些数进行初始化线性表,最大长度不得超过30,输入-1代表输入结束:
    ");
    	while(~scanf("%d",&t))
    	{
    	    if(t==-1)
                break;
            flag++;
    		InsertSqlist(&L,flag,t);
        }
        printf("初始化之后的线性表的元素为:
    ");
        ShowSqlist(L);
    	printf("请输入你要进行的相关指令(输入end代表结束):insert,show,delete,get,AscendingSequence,DescendingOrder.
    ");
    	while(~scanf("%s",s))
        {
            if(strcmp(s,"end")==0)
                break;
            if(strcmp(s,"insert")==0)
            {
                int tmp,val,k;
                printf("请输入要插入的位置和值;中间以空格隔开:");
                scanf("%d%d",&tmp,&val);
                k=InsertSqlist(&L,tmp,val);
                if(k==1)
                {
                    printf("Celebrate You,insert OK!
    ");
                    printf("插入%d后,线性表元素为:
    ",val);
                    ShowSqlist(L);
                }
            }
            if(strcmp(s,"AscendingSequence")==0)
            {
                AscendingSequence(&L);
                printf("升序后的线性表元素为:
    ");
                ShowSqlist(L);
            }
            if(strcmp(s,"DescendingOrder")==0)
            {
                DescendingOrder(&L);
                printf("降序后的线性表元素为:
    ");
                ShowSqlist(L);
            }
            if(strcmp(s,"delete")==0)
            {
                int tmp,k;
                printf("请输入要删除的位置:");
                scanf("%d",&tmp);
                k=DeleteSqlist(&L,tmp);
                if(k==1)
                {
                    printf("删除%d位置元素之后,线性表的元素为:
    ",tmp);
                    ShowSqlist(L);
                }
            }
            if(strcmp(s,"get")==0)
            {
                int tmp;
                printf("请输入要获取元素的位置:");
                scanf("%d",&tmp);
                if(L.length<tmp||tmp<1)
                    printf("Location Error!
    ");
                else
                {
                    int val=GetSqlist(L,tmp);
                printf("Celebrate You,get OK!
    ");
                printf("位置为%d的元素其值为%d
    ",tmp,val);
                }
            }
            if(strcmp(s,"show")==0)
            {
                printf("线性表的元素为:
    ");
                ShowSqlist(L);
                printf("Celebrate You,show OK!
    ");
            }
            memset(s,'',sizeof(s));
        }
    	return 0;
    }
    
  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/Yqifei/p/12675988.html
Copyright © 2011-2022 走看看