栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构day1

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构day1

.c文件 头文件
#include
#include"a.h"
#include
#include
创建线性表

 

//create
seqList* list()
{
        seqList *S=(seqList*)malloc(sizeof(seqList));
        if(NULL == S)
        {
                printf("apply failed!n");
                return NULL;
        }

        memset(S->data,0,sizeof(S->data));
        S->len=0;

        printf("apply successful!n");
        return S;
}

判空判满

 

//judge empty
int listEmpty(seqList *S)
{
        if(NULL==S)
        {
                printf("list not legetimata!n");
                exit(0);
        }
        return S->len==0?1:0;
}

//judge full
int listFull(seqList *S)
{
        return S->len==MAX?1:0;
}
添加数据

 

//add data
int listAdd(seqList *S,datatype e)
{
        //full?
        if(listFull(S))
        {
                printf("list fulln");
                return -1;
        }

        //insert
        S->data[S->len]=e;

        //len
        S->len++;
        printf("add successful!n");
        return 0;
}

 遍历
//traverse
int listTraver(seqList *S,int n)
{
        if(listEmpty(S))
        {
                printf("data empty!n");
                return -1;
        }
        int i=0;
        for(i=0;idata[i]);
        }
        printf("n");
        return 0;
}

按位添加
//insert data(pos)
int listInsert(seqList *S,int pos,datatype e)
{

        if(listFull(S))
        {
                printf("data full!n");
                return -1;
        }
        int i;
        for(i=S->len;i>pos-1;i--)
        {
                S->data[i]=S->data[i-1];
        }
        S->data[pos-1]=e;
        S->len++;
        printf("insert successful!n");
        return 0;
}

按位删除
//delate data(pos)
int listDelate(seqList *S,int pos)
{
        if(listEmpty(S))
        {
                printf("data empty!n");
                return -1;
        }
        int i;
        for(i=pos-1;ilen;i++)
        {
                S->data[i]=S->data[i+1];
        }
        S->len--;
        printf("delate successful!n");
        return 0;
}

按范围删除
//delate by line
int listDelateByline(seqList *S,int line1,int line2)
{
        listEmpty(S);
        int i;
        int k;
        k=line2-line1;
        for(i=line1;ilen;i++)
        {
                S->data[i-1]=S->data[k+i];
        }
        S->len=S->len-k-1;
        printf("delate byline successful!n");
        return 0;
}

按位查找或者按值查找
//search data(pos or value)
datatype listSearchPos(seqList *S,int pos)
{
        if(listEmpty(S))
        {
                printf("data empty!n");
                return -1;
        }
        printf("find!n");
        return S->data[pos-1];
}

int listSearchValue(seqList *S,datatype e)
{
        listEmpty(S);
        int i;
        int j=0;
        for(i=0;ilen;i++)
        {
                if(e==S->data[i])
                {
                        printf("find!n");
                        return i+1;
                }
                j++;
        }
        if(j==S->len-1)
        {
                printf("not find!n");
                return -1;
        }
}

选择排序和冒泡排序
//sort data
int listSortSelect(seqList *S)
{
        listEmpty(S);
        int i,j,k;
        for(i=0;ilen;i++)
        {
                for(j=i;jlen;j++)
                {
                        if(S->data[i]>S->data[j])
                        {
                                k=S->data[i];
                                S->data[i]=S->data[j];
                                S->data[j]=k;
                        }
                }
        }
        printf("sort select successful!n");
        return 0;
}

int listSortBubbling(seqList *S)
{
        listEmpty(S);
        int i,j,k;
        for(i=0;ilen;i++)
        {
                for(j=0;jlen;j++)
                {
                        if(S->data[j]data[j+1])
                        {
                                k=S->data[j];
                                S->data[j]=S->data[j+1];
                                S->data[j+1]=k;
                        }
                }
        }
        printf("sort bubbling successful!n");
        return 0;
}

按位替换和按值替换
//revise data(pos or value)
int listRevisePos(seqList *S,int pos,datatype new_e)
{
        listEmpty(S);
        if(pos<0 || pos>S->len)
        {
                return -1;
        }
        S->data[pos-1]=new_e;
        printf("revise successful!n");
        return 0;
}

int listReviseValue(seqList *S,datatype old_e,datatype new_e)
{
        listEmpty(S);
        int i,j=0;
        for(i=0;ilen;i++)
        {
                if(S->data[i]==old_e)
                {
                        S->data[i]=new_e;
                        j++;
                }
        }
        if(j==0)
        {
                printf("revise failedn");
                return -1;
        }
        printf("revise successful!n");
        return 0;
}

去重

 

//remove duplicates
int listDuplicates(seqList *S)
{
        listEmpty(S);
        int i,j,k;
        int x;
        for(i=0;ilen;i++)
        {
                for(j=i+1;jlen;j++)
                {
                                if(S->data[i]==S->data[j])
                                {
                                        listDelate(S,j+1);
                                        j--;
                                }
                }
        }
        printf("duplicate successful!n");
        return 0;
}

释放
//release data
void listRelease(seqList *S)
{
        if(NULL!=S)
        {
                free(S);
        }
        S=NULL;
        printf("release wuccessful!n");
}

 .h文件

 

#ifndef __A__
#define __A__

#define MAX 20
typedef int datatype;


typedef struct
{
        datatype data[MAX];
        int len;
}seqList;

seqList* list();

//judeg empty
int listEmpty(seqList *S);

//judge full
int listFull(seqList *S);

//add data
int listAdd(seqList *S,datatype e);

//traverse
int listTraver(seqList *S,datatype n);

//insert data(pos)
int listInsert(seqList *S,int pos,datatype e);

//delate data(pos or byline)
int listDelate(seqList *S,int pos);

int listDelateByline(seqList *S,int line1,int line2);

//search data(pos or value)
datatype listSearchPos(seqList *S,int pos);

int listSearchValue(seqList *S,datatype e);

//sort data
int listSortSelect(seqList *S);

int listSortBubbling(seqList *S);

//revise data(pos or value)
int listRevisePos(seqList *S,int pos,datatype new_e);

int listReviseValue(seqList *S,datatype old_e,datatype new_e);

//remove duplicates
int listDuplicates(seqList *S);

//release data
void listRelease(seqList *S);

#endif


 

主函数
#include
#include"a.h"
#include

int main(int argc,const char *argv[])
{
        seqList *S=list();
        if(NULL==S)
        {
                return -1; 
        }
        printf("add 2,3,4n");
        listAdd(S,2);
        listAdd(S,3);
        listAdd(S,4);
        listTraver(S,S->len);
        printf("n");
        printf("pos=2,value=9n");
        listInsert(S,2,9);
        listTraver(S,S->len);
        printf("n");
        printf("pos=3n");
        listDelate(S,3);
        listTraver(S,S->len);
        printf("n");
        printf("search pos=2n");
        printf("value=%dnn",listSearchPos(S,2));
        printf("search value=9n");
        printf("pos=%dnn",listSearchValue(S,9));
        printf("select sortn");
        listSortSelect(S);
        listTraver(S,S->len);
        printf("n");
        printf("bubbling sortn");
        listSortBubbling(S);
        listTraver(S,S->len);
        printf("n");
        printf("pos=2,new value=5n");
        listRevisePos(S,2,5);
        listTraver(S,S->len);
        printf("n");
        printf("old value=5,new value=6n");
        listReviseValue(S,5,6);
        listTraver(S,S->len);
        printf("n");
        printf("add 2,2,3,6,3n");
        listAdd(S,2);
        listAdd(S,2);
        listAdd(S,3);
        listAdd(S,6);
        listAdd(S,3);
        listTraver(S,S->len);
        printf("n");
        listDuplicates(S);
        listTraver(S,S->len);
        printf("n");
        printf("add 2n");
        listAdd(S,2);
        listTraver(S,S->len);
        printf("line1=2,line2=4n");
        listDelateByline(S,2,4);
        listTraver(S,S->len);
        listRelease(S);
        return 0;
}


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号