您的位置:首页 > 理论基础 > 数据结构算法

数据结构---无重复元素链表的实现

2016-01-26 18:59 441 查看
//节点结构体
struct inv
{
int i;//节点元素
struct inv*nextpointer;
};

//返回指定元素节点的指针,不包含时返回NULL
struct inv*  contain(int i,struct inv*head)
{
struct inv *headp=head;
while(headp!=NULL)
{
if(headp->i==i)
{
break;
}
headp=headp->nextpointer;
}
return headp;
}

//追加元素
int append(int i,struct inv **headpp)
{
struct inv *headp=*headpp;
struct inv *prev;
if(*headpp==NULL)
{
*headpp=(struct inv*)malloc(sizeof(struct inv));
(*headpp)->i=i;
(*headpp)->nextpointer=NULL;
return 1;
}

while(headp!=NULL)
{
prev=headp;
if(headp->i==i)
{
return 0;
}
headp=headp->nextpointer;
}

prev->nextpointer=(struct inv*)malloc(sizeof(struct inv));
prev=prev->nextpointer;

prev->i=i;
prev->nextpointer=NULL;

return 1;

}

//删除指定元素
int dele(int i,struct inv **headpp)
{
int returnvalue=0;
struct inv*prev;
struct inv*headp=*headpp;

if(headp==NULL)
{
return 0;
}

while(headp->i!=i&&headp->nextpointer!=NULL)
{
prev=headp;
headp=headp->nextpointer;
}
if(headp->i==i)
{
if(headp==*headpp)
{
*headp=*headp->nextpointer;
}
prev->nextpointer=headp->nextpointer;
free(headp);
return 1;

}
return 0;
}

//删除整个链表
void deleteall(struct inv**head)
{
struct inv*headp=*head;
struct inv*temp;
while(headp!=NULL)
{
temp=headp->nextpointer;
free(headp);
headp=temp;
}
*head=NULL;
}

//扫描打印
void paint(struct inv*headp)
{
while(headp!=NULL)
{
printf("    %d\n",headp->i);
headp=headp->nextpointer;
}
}


cpp源码文件: http://pan.baidu.com/s/1bodkQRX
linked list.cpp文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: