嵌入式学习-数据结构

7.19.数据结构day1-顺序表

seqList.h

#ifndef __SEQLIST__H
#define __SEQLIST__H

#define MAX 20
typedef int datatype;

typedef struct
{
	datatype data[MAX]; //存储顺序表数组
	int len;  //表示顺序表长度
}seqList;
//创建顺序表
seqList* listCreate();

//判空,空返回1
int listEmpty(seqList *s);
//判满,满返回1
int listFull(seqList *s);
//添加一个数据

//按照位置进行查找,成功后返回查找到的数据元素
datatype listSearchPos(seqList *s, int pos);


//按照值进行修改
int listUpdateValue(seqList *s, datatype old_e, datatype new_e);



//选择排序
void listRank(seqList *s);

#endif


seqList.c

#include"seqList.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>  
  
//创建顺序表                                                                                      
seqList* listCreate()                               
{                                                   
    seqList *S = (seqList*)malloc(sizeof(seqList)); 
    if(NULL==S)                                     
    {                                               
        printf("创建失败\n");                       
        return NULL;                                
    }                                               
    memset(S->data,0,sizeof(S->data));              
    S->len=0;                                       
    printf("创建成功\n");                           
    return S;                                       
}                                                   
//判空                                           
int listEmpty(seqList *S)                        
{                                                
    if(NULL==S)                                  
    {                                            
        printf("所给顺序表不合法\n");            
        exit(0);                                 
    }                                            
    return S->len==0? 1 : 0;//0表示非空,1表示空 
}                                                

//按照值进行修改数组数据                                                 
int listUpdateValue(seqList *s, datatype old_e, datatype new_e) 
{
        for(int i=0;i<s->len;i++)
    {
        if(old_e==s->data[i])
        { 
            s->data[i]=new_e;
            printf("修改成功");
            return 1;
        }

    }
        printf("修改失败");
        return 0;
}                           

//按照位置进行查找,成功后返回查找到的数据元素       
datatype listSearchPos(seqList *s, int pos)         
{
if( pos<0 || pos>s->len-1 || listEmpty(s))//逻辑判断
{
    printf("查找失败\n");
    return NULL;
}
printf("按位置查找成功\n");
    return s->data[pos];//返回数据
}                  

//选择排序  降序
void listRank(seqList *s)
{
    
    for(int i=0;i<s->len-1;i++)
    {
        int index=i;
        for(int j=i+1;j<s->len;j++)
        {
           if(s->data[index]<s->data[j])
           {
                index=j;
           }
        }
        if(index!=i)
        {
        int tem=s->data[index];
        s->data[index]=s->data[i];
        s->data[i]=tem;
        }
    }
}

//添加一个数据
int listAdd(seqList *S, datatype e)
{
    if(listFull(S))
    {                              
        printf("表满,添加失败\n");
        return -1;
    }
    //添加逻辑
    S->data[S->len] = e;
    S->len ++;
    printf("添加成功\n");
    return 0;
}

main.c

#include"seqList.h"                     
#include<stdio.h>                       
#include<stdlib.h>                      
                                        
int main(int argc, const char *argv[])  
{                                       
    seqList *S = listCreate();          
    if(NULL==S)                         
    {                                   
        return -1;                      
    }                                   
    //调用添加函数                      
    listAdd(S,7);`                      
    listAdd(S,5);                       
    listAdd(S,5);                       
    listAdd(S,5);                       
    listAdd(S,8);                       
    listAdd(S,9);                       
    listAdd(S,0);                            
                                                                         
    listshow(S);                        
    printf("按位置查找测试\n");         
    printf("%d\n",listSearchPos(S,6));  
    printf("按照值进行修改\n");         
    listUpdateValue(S,8,6);             
    listshow(S);                        
    printf("选择排序降序测试\n");         
    listRank(S);                        
    listshow(S);                        
                                 
    return 0;                           
}                                       

result

ubuntu@ubuntu:01_day$ ./a.out
创建成功
添加成功
添加成功
添加成功
添加成功
添加成功
添加成功
添加成功
输出数组内容为:
7 5 5 5 8 9 0
按位置查找测试
按位置查找成功
0
按照值进行修改
修改成功输出数组内容为:
7 5 5 5 6 9 0
选择排序降序测试输出数组内容为:
9 7 6 5 5 5 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值