鱼C论坛

 找回密码
 立即注册
查看: 1882|回复: 0

[学习笔记] 静态数组

[复制链接]
发表于 2020-5-4 16:13:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近看到数据结构静态数组部分,自认为听懂了,但是一上手发现问题很多,搞了很久好像弄完了,故把代码贴上来,抛砖引玉,希望大家提出不足和改进
#define MAXSIZE 1000

typedef struct component
{
    int data;
    int cur;
}component;

component StaticLinkList[MAXSIZE];

void InitList()
{
    for(int i=0;i<MAXSIZE-1;i++)
    {
        StaticLinkList[i].cur = i+1;
    }
    StaticLinkList[MAXSIZE-1].cur = 0;
}

void Print()
{
    printf("\n--------------------------\n");
    for(int i=StaticLinkList[MAXSIZE-1].cur;i;i = StaticLinkList[i].cur)
    {
        printf("%d\t",StaticLinkList[i].data);
    }
    printf("\n-----------------------------\n");
}

void ListInsert(int cur,int data)
{
    if(cur<1 || cur > MAXSIZE-2)
        return;

    if(StaticLinkList[MAXSIZE-1].cur==0)
    {
        int reserve = StaticLinkList[0].cur;
        StaticLinkList[0].cur = StaticLinkList[reserve].cur;
        StaticLinkList[reserve].data = data;
        StaticLinkList[reserve].cur = 0;
        StaticLinkList[MAXSIZE-1].cur = reserve;
    }

    else if(cur == 1)
    {
        int reserve = StaticLinkList[0].cur;
        StaticLinkList[reserve].data = data;
        StaticLinkList[0].cur = StaticLinkList[reserve].cur;
        StaticLinkList[reserve].cur = StaticLinkList[MAXSIZE-1].cur;
        StaticLinkList[MAXSIZE-1].cur = reserve;
    }
    else
    {
        int tmp = StaticLinkList[MAXSIZE-1].cur;
        for(int i=1;i<cur-1 && StaticLinkList[tmp].cur;i++,tmp = StaticLinkList[tmp].cur);
        int reserve = StaticLinkList[0].cur;
        StaticLinkList[reserve].data = data;
        StaticLinkList[0].cur = StaticLinkList[reserve].cur;
        StaticLinkList[reserve].cur = StaticLinkList[tmp].cur;
        StaticLinkList[tmp].cur = reserve;
    }
}

void ListDelete(int cur)
{
    if(cur < 1 || cur > MAXSIZE-2)
        return;
    int tmp = StaticLinkList[MAXSIZE-1].cur;
    if(tmp == 0)
    {
        printf("\nempty\n\n");
    }

    if(cur == 1)
    {
        StaticLinkList[MAXSIZE-1].cur = StaticLinkList[tmp].cur;
        StaticLinkList[tmp].cur = StaticLinkList[0].cur;
        StaticLinkList[0].cur = tmp;
    }
    else
    {
        for(int i=1;i<cur-1 && StaticLinkList[tmp].cur;i++,tmp = StaticLinkList[tmp].cur);
        if(tmp == 0)
        {
            printf("\n\n\n cur error!\n\n\n");
            return;
        }

        int del = StaticLinkList[tmp].cur;
        StaticLinkList[tmp].cur = StaticLinkList[del].cur;
        StaticLinkList[del].cur = StaticLinkList[0].cur;
        StaticLinkList[0].cur = del;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-24 02:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表