Estructura de datos de código fuente de tabla lineal

Para mí, he lanzado durante 3 horas hoy, y finalmente escribí el código fuente de la tabla lineal de la estructura de datos en lenguaje C, qwq

Estructura de datos de código fuente de tabla lineal

Inserte la descripción de la imagen aquí

#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\n");
        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!\n");
    }
}

void DescendingOrder(struct Sqlist *L)
{
    int tmp;
    if(L->length<1||L->length>cmax)
    {
        printf("Descending Order fail\n");
        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!\n");
    }
}

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\n");
		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("\n");
	return ;
}

int DeleteSqlist(struct Sqlist *L,int i)
{
	if(i<1||i>L->length||L->length==0)
	{
		printf("delete fail\n");
		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!\n");
		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代表输入结束:\n");
	while(~scanf("%d",&t))
	{
	    if(t==-1)
            break;
        flag++;
		InsertSqlist(&L,flag,t);
    }
    printf("初始化之后的线性表的元素为:\n");
    ShowSqlist(L);
	printf("请输入你要进行的相关指令(输入end代表结束):insert,show,delete,get,AscendingSequence,DescendingOrder.\n");
	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!\n");
                printf("插入%d后,线性表元素为:\n",val);
                ShowSqlist(L);
            }
        }
        if(strcmp(s,"AscendingSequence")==0)
        {
            AscendingSequence(&L);
            printf("升序后的线性表元素为:\n");
            ShowSqlist(L);
        }
        if(strcmp(s,"DescendingOrder")==0)
        {
            DescendingOrder(&L);
            printf("降序后的线性表元素为:\n");
            ShowSqlist(L);
        }
        if(strcmp(s,"delete")==0)
        {
            int tmp,k;
            printf("请输入要删除的位置:");
            scanf("%d",&tmp);
            k=DeleteSqlist(&L,tmp);
            if(k==1)
            {
                printf("删除%d位置元素之后,线性表的元素为:\n",tmp);
                ShowSqlist(L);
            }
        }
        if(strcmp(s,"get")==0)
        {
            int tmp;
            printf("请输入要获取元素的位置:");
            scanf("%d",&tmp);
            if(L.length<tmp||tmp<1)
                printf("Location Error!\n");
            else
            {
                int val=GetSqlist(L,tmp);
            printf("Celebrate You,get OK!\n");
            printf("位置为%d的元素其值为%d\n",tmp,val);
            }
        }
        if(strcmp(s,"show")==0)
        {
            printf("线性表的元素为:\n");
            ShowSqlist(L);
            printf("Celebrate You,show OK!\n");
        }
        memset(s,'\0',sizeof(s));
    }
	return 0;
}

Supongo que te gusta

Origin www.cnblogs.com/Yqifei/p/12675988.html
Recomendado
Clasificación