数据结构--顺序表

顺序表有固定的大小,它头节点没有直接前驱,尾节点没有直接后继,其他节点有且有一个直接前驱和一个直接后继。

代码如下:

#define N 1024
typedef int type;
typedef struct sqlist{
    int len; //记录元素个数
    type data[N];
}sql,*sqlp;

sqlp create_sql() //创建表头
{
    sqlp L=(sqlp)malloc(sizeof(sql));
    if(L==NULL)
    {
        printf("create failed\n");
        return 0;
    }
    return L;
}

sqlp insert_sql(sqlp L,int pos,type data) //按位置插入
{
    if(L->len==N)//判断插入位置是否合法
    {
        return 0;
    }
    int i;
    for(i=(L->len)-1;i>=pos;i--) //找到需要插入位置的前一个元素
    {
        L->data[i+1]=L->data[i];       
    }
    L->data[pos]=data;
    L->len++;
    return L;
}

sqlp delete_sql_pos(sqlp L,int pos) //按位置删除
{
    if(pos>L->len-1)
    {
        printf("delete flout\n");
    }
    int i;
    for(i=pos;i<L->len-1;i++)
    {
        L->data[i]=L->data[i+1];
    }
    L->len--;
    return L;
}

sqlp delete_sql_data(sqlp L,type data) //按内容删除
{
    int i,j;
    for(i=0;i<L->len;i++)
    {
        if(L->data[i]==data)
        {
            for(j;j<L->len-1;j++)
            {
                L->data[j]=L->data[j+1];
            }
                i--;
                L->len--;
        }
    }
    return L;
}

sqlp change_sql_pos(sqlp L,int pos,type data) //按位置修改
{
    if(pos<L->len)
    {
        L->data[pos]=data;
    }
    return L;
}

sqlp change_sql_data(sqlp L,type mesg,type data) //按内容修改
{
    int i;
    for(i=0;i<L->len;i++)
    {
        if(L->data[i]==mesg)
        {
            L->data[i]=data;
        }
    }
    return L;
}

int search_sql_pos(sqlp L,type data) //按内容查询位置
{
    int i;
    for(i=0;i<L->len;i++)
    {
        if(L->data[i]==data)
        {
            printf("pos in the %d\n",i);
        }
    }
    return 0;
}

type search_sql_data(sqlp L,int pos) //按位置查询内容
{
    printf("data in the %d\n",L->data[pos]);
}

int main(int argc, char *argv[]) //测试

    sqlp L=create_sql();
    if(L==NULL)
    {
        printf("create fulot\n");
    }
    insert_sql(L,0,1);
    insert_sql(L,0,2);
    insert_sql(L,0,2);
    insert_sql(L,0,3);
    insert_sql(L,0,4);
   // delete_sql_pos(L,2);
    //delete_sql_data(L,2);
   // change_sql_pos(L,0,5);
   change_sql_data(L,2,9);
    search_sql_pos(L,9);
    search_sql_data(L,0);
    show_sql(L);
    return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值