线性表操作的基本应用

#include"stdio.h"
#include"stdlib.h"


#define MAXSIZE 10
#define OK 1

#define YES 1
#define NO 0
 

 struct Sqlist
{
    int a[MAXSIZE];
    int length;
 };
 
void listlength(Sqlist *list)
{
    printf("线性表得长度:%d\n",list->length);
}

int emptylist(Sqlist list)    //判断线性表是否为空;
{
    if(list.length==0)
    {
        return YES;
    }
    else
    {
        return NO;
    }
 }
 
int initlist(Sqlist *list)
{
    list->length=0;
    return OK;
}
 
void listinsert(Sqlist *list,int num,int n)
{
    int i;
    for(i=MAXSIZE-1;i>=n;i--)
    {
        list->a[i]=list->a[i-1];
    }
    list->a[n-1]=num;
    list->length ++;
}

void printlist(Sqlist list)
{
    printf("数据:");
    for(int i=0;i<list.length;i++)
    {
        printf("%3d",list.a[i]);
    }
    
}
 
void clearlist(Sqlist *list)
{
    list->length=0;
}


int deldata(Sqlist *list,int num,int sign)
{
    int i;
    

    
    for(i=0;i<list->length;i++)
    {    
        
        if(list->a[i]==num)
        {    
            for(int k=i;k<list->length;k++)
            {
                list->a[k]=list->a[k+1];
            }
            sign=1;
        }
    }
    if(sign==1)
    {
        list->length --;
    }
    return sign;
}

void locateElem(Sqlist list,int num)
{
    int i,sign,j;
    for(i=0;i<list.length;i++)
    {
        if(num==list.a[i])
        {
            sign=1;
            j=i+1;
            break;
        }
        else
        {
            sign=0;
        }
        
    }
    if(sign==1)
    {
        printf("%d存在,在第%d位",num,j);
    }
    else
    {
        printf("%d不存在",num);
    }
}
 
 
int main()
{
    struct Sqlist list;
    int i;
    i=initlist(&list);  //初始化性表
    
    i=emptylist(list);     //判断线性表是否为空
    if(i=1)
    {
        printf("线 性 表 为 空\n");
    }
    else
    {
        printf("线 性 表 不 为 空\n");
    }
    
    for(int j=1;j<=5;j++)
    {
        listinsert(&list,j,1);
    }
    listlength(&list);   //线性表的长度  

    printlist(list);   //显示表里得数据项;
    printf("\n");
    
    clearlist(&list);
    printf("清空线性表中:\n");
    i=emptylist(list);
    if(i=1)
    {
        printf("清空成功\n");
    }
    else
    {
        printf("ERROR\n");
    }
    
    printlist(list);
    printf("\n");
    printf("加入新的数据项:\n");
    for(int j=1;j<=10;j++)
    {
        listinsert(&list,j,1);
    }
    printlist(list);
    printf("\n");
    listlength(&list);
    
    
    //删除数据
    int sign=0,num;
    printf("删除的数据:");
    scanf("%d",&num);
    getchar();
    
    sign=deldata(&list,num,sign);
    
    if(sign==0)
    {
        printf("删除得元素不存在");
    }
    else
    {
        printf("删除后:");
        printlist(list);
    }
    printf("\n");
    
    
    //查找某一元素是否存在
    printf("输入查找得元素:");
    scanf("%d",&num);
    getchar();
    locateElem(list,num);
    
    
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值