您的位置:首页 > 其它

补充:关于不定长的链表的实现

2015-08-01 10:05 375 查看
前一篇简单的实现了一下链栈的实现。由于最近正在学习数据结构,还是记录一下自己的学习过程吧。

链表在数据结构中,觉得还是比较“实在”,也比较常用。

上代码,还请指教指教。。。

bool init_list(dseq_list *p)
{
if (p==NULL)
{
return false;
}
p->elem=(ELEM_TYPE *)malloc(sizeof(ELEM_TYPE)*MAX_SIZE);
if (p->elem == NULL)
{
return false;
}
p->length=0;
p->total_size=MAX_SIZE;
return true;

}

bool insert_list(dseq_list *p,int pos,ELEM_TYPE value)
{
if (p==NULL)
{
return false;
}
if (pos<0||pos > p->length)
{
return false;
}
if (p->length == p->total_size)
{
p->elem=(ELEM_TYPE *)realloc(p->elem,sizeof(ELEM_TYPE)*p->total_size*2);
if (p->elem==NULL)
{
return false;
}
p->total_size=p->total_size*2;
}
for (int i=p->length-1;i>pos;i--)
{
p->elem[i+1]=p->elem[i];
}
p->length++;
p->elem[pos]=value;
return true;

}

bool show_list(dseq_list *p)
{
if (p==NULL)
{
return false;
}
for (int i=0;i<p->length-1;i++)
{
printf("%d\n",p->elem[i]);
}
return true;
}

bool is_empty(dseq_list *p)
{
if (p==NULL)
{
return false;
}
if (p->length==0)
{
return true;
}
else
{
return false;
}
return true;
}

int get_elem(dseq_list *p,int pos)
{
if (p==NULL)
{
return false;
}
if (pos<0||pos > p->length)
{
return false;
}
return p->elem[pos];
}

bool del_elem(dseq_list *p,int pos)
{
if (p==NULL)
{
return false;
}
if (pos<0||pos>p->length-1)
{
return false;
}
for (int i=pos;i<p->length-1;i++)
{
p->elem[i]=p->elem[i+1];
}
return true;
}

bool destory_list(dseq_list *p)
{
if(p==NULL)
{
return false;
}
free(p->elem);
p->elem=NULL;
p->length=0;
p->total_size=0;
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: