马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
}
|