- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct SeqlistNode
- {
- int date;
- }seqlistNode;
- typedef struct Seqlist
- {
- unsigned int lengh; //已存数据长度
- unsigned int count; //最大长度
- seqlistNode * date; //数据域
- }seqlist;
- seqlist * Creatlist(int count)
- {
- seqlist * s=NULL;
- if(count==0)
- return NULL;
- s=(seqlist *)malloc(sizeof(seqlist)+count*sizeof(seqlistNode)); //动态开辟内存
- memset(s,sizeof(seqlist)+count*sizeof(seqlistNode)); //自己管理
- s->date=(seqlistNode *)(s+1);
- s->lengh=0;
- s->count=count;
- return s;
- }
- int insertList(seqlist *s,seqlistNode n,unsigned pos)
- {
- unsigned i;
- if(s==NULL) return -1;
- if(pos > (s->count-1) )return -2;
- if(s->lengh==s->count) return -3;
- if(pos > s->lengh) pos=s->lengh;
- for(i=s->lengh;i!=pos;i--)
- s->date[i].date=s->date[i-1].date;
- s->date[pos].date=n.date;
- s->lengh+=1;
- return 0;
- }
- int dellist(seqlist *s,unsigned pos)
- {
- unsigned int i;
- if(s==NULL) return -1;
- if(pos>s->lengh) return -2;
- for(i=pos;i<s->lengh-1;i++)
- s->date[i]=s->date[i+1];
- s->lengh--;
- return 0;
- }
- void destroylist(seqlist* list)
- {
- if(list!=NULL)
- free(list);
- }
- void display(seqlist *s)
- {
- unsigned i;
- for(i=0;i<s->lengh;i++)
- {
- printf("%d ",s->date[i].date);
- }
- printf("\n");
- }
- int main()
- {
- seqlist *list=NULL;
- unsigned i=0;
- list=Creatlist(10);
- for(i;i<list->count;i++)
- {
- seqlistNode n;
- n.date=i;
- insertList(list,n,0);
- }
- display(list);
- for(i=0;i<list->count;i++)
- {
- dellist(list,0);
- display(list);
- }
- destroylist(list);
- return 0;
- }
运行结果: