线性表的顺序储存

来源:互联网 发布:知乎阅读精选 编辑:程序博客网 时间:2024/06/10 16:53

一周复习数据结构基础系列:
线性表的顺序储存:
不复习不知道,在这里我用结构体list做函数参数竟然无法修改结构体成员内容(在我心里这应该算全局变量啊),必须用 list*和->,好吧,待我去看看书。

/*    title:线性表的顺序储存    description:    author: averyboy    time:2017.3.13    version:1.0*/#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<map>#include<set>#include<cctype>#include<ctime>#define INF 0x3f3f3f3f3#define PI acos(-1.0)using namespace std;int maxx =1000;struct list{    int elem[1000];    int last;}seqlist1,*seqlist2;//用数组表示顺序表,last表示表当前最后一个数据下标。void init(int num)//建立顺序表{    memset(seqlist1.elem,0,sizeof(seqlist1.elem));    seqlist1.last=num;    return;}int listlength(list s)//查询顺序表长度{    return s.last+1;}void showlist(list s)//打印顺序表{    for(int i=0;i<=listlength(s);i++)    {        printf("%d  ",s.elem[i]);    }    printf("\n");    return ;}int  getdata(list s,int n)//获取给出下标处的数据值{    if(s.last!=-1&&s.last>=n)        return s.elem[n];        else        return -1;}int finddata(list  s,int n )//根据值查找数据{    int i=0;    while(i<=s.last&&s.elem[i]!=n)    {        i++;    }    return  (i>s.last?-1:i);}void deletelist(list *s,int n)//删除给定位置值{    for(int i=n;i<s->last;i++)    {        s->elem[i]=s->elem[i+1];        //cout<<"!!!!"<<endl;    }    s->last--;    return ;}void inslist(list *s,int n,int v)//在指定位置插入值{    for(int i=s->last;i>n;i--)    {        s->elem[i+1]=s->elem[i];       // cout<<"???"<<endl;    }    s->elem[n]=v;     s->last++;    return ;}void clear(list s)//清空表{    memset(s.elem,0,sizeof(s.elem));    return ;}int main(){    init(10);    seqlist1.elem[5]=100;    showlist(seqlist1);    inslist(&seqlist1,8,4);    deletelist(&seqlist1,1);    cout<<getdata(seqlist1,4)<<endl;    cout<<finddata(seqlist1,4)<<endl;    showlist(seqlist1);    clear(seqlist1);    showlist(seqlist1);    return 0;}
0 0
原创粉丝点击