还有一份情等我去还 2020-11-26 17:11 采纳率: 100%
浏览 24
已结题

数据结构(C语言)大佬们这个错误怎么改?

 

 

 

 

#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR -1
#define MAXNUM 100
typedef int DataType;
typedef struct
{
	DataType data[MAXNUM];
	int last;
}SeqList;
void SeqLSetNull(SeqList*1)
{
	1->last=-1;
}
int SeqLLength(SeqList*1)
{
	return 1->last+1;
}
DataType SeqLGet(Seqlist*1,int i)
{
	if(i<1||1->last+1)
	{
		printf("\t i的位置不正确\n");
		return ERROR;
	}
	return 1->data[i-1];
}
int SeqLLocate(SeqList*1,DataType x)
{
	int i;
	for(i=0;i<=1->last;i++)
		if(1->data[i]==x) return(i+1);
		return 0;
}
int SeqLInsert(SeqList*1,int i,DataType x)
{
	int j;
	if(1->last>=MAXNUM-1)
	{
		printf("\t溢出\n");
		return ERROR;
	}
	if(i<1||i>1->last+2)
	{
		printf("\t插入的位置不正确\n");
		return ERROR;
	}
	else
	{
		for(j=1->last;j>=i-1;j--)
			1->data[j+1]=1->data[j];
		1->dataa[i-1]=x;
		1-last++;
	}
	return OK;
}
int SeqLDelete(SeqList*1,int i)
{
	int j;
	if(i<1||i>1->last+1)
	{
		printf("\t删除的位置不正确\n");
		return ERROR;
	}
	else
	{
		for(j=i;j<=1->last;j++)
			1->data[j-1]=1->data[j];
		1->last--;
	}
	return OK;
}
void SeqLCreate(SeqList*1)
{
	int i,n;
	printf("\t请输入表的长度:");
	scanf("%d",&n);
	1-last=n-1;
	printf("\t依次输入表中的数据元素:\n");
	for(i=0;i<n;i++)
	{
		printf("\t第%d个元素是:",i+1);
		scanf("%d",&1->data[i]);
	}
}
void SeqLPrint(SeqList*1)
{
	int j;
	if(1->last<0)
	{
		printf("\t表空!\n");
		exit(0);
	}
	else
	{
		printf("\n表的数据元素如下:\n(");
		for(j=0;j<=1->last;j++)
			printf("%5d,"1->data[j]);
		printf("\b)\n");
	}
}
#include<seqlist.h>
#include<seqlist.c>
int main(int argc,char*argv[])
{
	DataType y;
	SeqList*a,x;
	int m,t,read=0;
	a=&x;
	do
	{
		puts("            关于顺序表的操作\n");
		puts("            ==================================\n");
		puts("            1-----置空表");
		puts("            2-----建表");
		puts("            3-----求表长");
		puts("            4-----取节点");
		puts("            5-----定位");
		puts("            6-----插入");
		puts("            7-----删除");
		puts("            8-----输出");
		puts("            0-----退出"):
		printf("          请输入代号(0——8):");
		scanf("%d",&read);
		printf("\n");
		switch(read)
		{
		case 1:SeqLSetNull(a);break;
		case 2:SeqLCreate(a);break;
		case 3:printf("\t表的长度是:%d\n",SeqLLength(a));break;
		case 4:printf("\t取节点的位置是:");
		     scanf("%d",&m);
			 y=SeqLGet(a,m);
			 if(y)
				 printf("\t第%d个节点是%d\n",m,y);break;
	    case 5:printf("\t定位的数据元素是:");
			 scanf("%d",&y);
			 t=SeqLLocate(a,y);
			 if(t)
				 printf("\t定位数据元素的位置是:%d\n",t);break;
		case 6:printf("\t插入数据元素是:"):
			scanf("%d",&y);
			printf("\t查人的位置是:");
			scanf("%d",&m);
			t=SeqLPrint(a);break;
		case 7:printf("\t删除的位置是:");
			scanf("%d",&m);
			t=SeqLDelete(a,m);
			if(t)
				printf("\t删除后表的数据元素是:\n");
			SeqLPrint(a);break;
		case 8:SeqLPrint(a);break;
		case 0:read=0;
		}
	}while(read!=0);
	return 0;
}
  • 写回答

2条回答 默认 最新

  • qq_25376897 2020-11-26 18:23
    关注
    #include<malloc.h>
    #include<stdio.h>
    #include<stdlib.h>
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR -1
    #define MAXNUM 100
    typedef int DataType;
    typedef struct
    {
    	DataType data[MAXNUM];
    	int last;
    }SeqList;
    
    //置空表
    void SeqLSetNull(SeqList*l)
    {
    	l->last=-1;
    }
    //求表的长度
    int SeqLLength(SeqList*l)
    {
    	return l->last+1;
    }
    //取结点
    DataType SeqLGet(SeqList* l,int i){
        if(i<1||i>l->last+1){
            printf("\t i的位置不正确\n");
            return ERROR;
        }
        return l->data[i-1];
    }
    
    //定位运算
    int SeqLLocate(SeqList* l,DataType x){
        int i;
        for(i=0;i<=l->last;i++)
            if(l->data[i]==x)
                return(i+1);
        return 0;
    }
    
    //插入运算
    int SeqLInsert(SeqList* l,int i,DataType x)
    {
        int j;
        if(l->last>=MAXNUM-1)
        {
            printf("\t溢出\n");
            return ERROR;
        }
        if(i<1||i>l->last+2)
        {
            printf("\t插入位置不正确\n");
            return ERROR;
        }
        else{
            for(j=l->last;j>=i-1;j--)
                l->data[j+1]=l->data[j];
            l->data[i-1]=x;
            l->last++;
        }
        return OK;
    }
    
    //删除运算
    int SeqLDelete(SeqList* l,int i)
    {
        int j;
        if(i<1||l->last+1)
        {
            printf("\t删除位置不正确\n");
            return ERROR;
        }
        else
        {
            for(j=i;j<=l->last;j++)
                l->data[j-1]=l->data[j];
            l->last--;
        }
        return OK;
    }
    
    //建立顺序表
    void SeqLCreate(SeqList* l)
    {
        int i,n;
        printf("\t请输入表的长度:");
        scanf("%d",&n);
        l->last=n-1;
        printf("\t依次输入表中的数据元素(整数):\n");
        for(i=0;i<n;i++){
            printf("\t第%d个元素是:",i+1);
            scanf("%d",&l->data[i]);
        }
    }
    
    //输入顺序表
    void SeqLPrint(SeqList* l){
        int j;
        if(l->last<0){
            printf("\t表空!\n");
            exit(0);
        }
        else{
            printf("\n表的数据元素如下:\n(");
            for(j=0;j<=l->last;j++)
                printf("%5d",l->data[j]);
            printf("\b)\n");
        }
    }
    
    #include<seqlist.h>
    #include<seqlist.c>
    
    int main(int argc,char*argv[])
    {
    	DataType y;
    	SeqList*a,x;
    	int m,t,read=0;
    	a=&x;
    	do
    	{
    		puts("            关于顺序表的操作\n");
    		puts("            ==================================\n");
    		puts("            1-----置空表");
    		puts("            2-----建表");
    		puts("            3-----求表长");
    		puts("            4-----取节点");
    		puts("            5-----定位");
    		puts("            6-----插入");
    		puts("            7-----删除");
    		puts("            8-----输出");
    		puts("            0-----退出");
    		printf("          请输入代号(0——8):");
    		scanf("%d",&read);
    		printf("\n");
    		switch(read)
    		{
    		case 1:SeqLSetNull(a);break;
    		case 2:SeqLCreate(a);break;
    		case 3:printf("\t表的长度是:%d\n",SeqLLength(a));break;
    		case 4:printf("\t取节点的位置是:");
    		     scanf("%d",&m);
    			 y=SeqLGet(a,m);
    			 if(y)
    				 printf("\t第%d个节点是%d\n",m,y);break;
    	    case 5:printf("\t定位的数据元素是:");
    			 scanf("%d",&y);
    			 t=SeqLLocate(a,y);
    			 if(t)
    				 printf("\t定位数据元素的位置是:%d\n",t);break;
    		case 6:printf("\t插入数据元素是:");
    			scanf("%d",&y);
    			printf("\t插入的位置是:");
    			scanf("%d",&m);
    			SeqLPrint(a);break;
    		case 7:printf("\t删除的位置是:");
    			scanf("%d",&m);
    			t=SeqLDelete(a,m);
    			if(t)
    				printf("\t删除后表的数据元素是:\n");
    			SeqLPrint(a);break;
    		case 8:SeqLPrint(a);break;
    		case 0:read=0;break;
    		}
    	}while(read!=0);
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面