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