1 / 23
文档名称:

data structure arithmetic资料.pdf

格式:pdf   页数:23
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

data structure arithmetic资料.pdf

上传人:翩仙妙玉 2012/7/17 文件大小:0 KB

下载得到文件列表

data structure arithmetic资料.pdf

文档介绍

文档介绍:数据结构部分算法
一、线性表
1. 删除线性表 a 中第 i 个元素起的 k 个元素
Status DeleteK(SqList &a,int i,int k)//删除线性表 a 中第 i 个元素起的 k 个元素
{
if(i<1||k<0||i+k-1>) return INFEASIBLE;
for(count=1;i+count-1<=-k;count++) //注意循环结束的条件
[i+count-1]=[i+count+k-1];
-=k;
return OK;
}//DeleteK
2. 把 x 插入递增有序表 va 中
Status Insert_SqList(SqList &va,int x)//把 x 插入递增有序表 va 中
{
if(+1>) return ERROR;
++;
for(i=-1;[i]>x&&i>=0;i--)
[i+1]=[i];
[i+1]=x;
return OK;
}//Insert_SqList
3. 链表上的元素查找,返回指针
LNode* Locate(LinkList L,int x)//链表上的元素查找,返回指针
{
for(p=l->next;p&&p->data!=x;p=p->next);
return p;
}//Locate
4. 求链表的长度
int Length(LinkList L)//求链表的长度
{
for(k=0,p=L;p->next;p=p->next,k++);
return k;
}//Length

1
5. 把链表 hb 接在 ha 后面形成链表 hc
void ListConcat(LinkList ha,LinkList hb,LinkList &hc)//把链表 hb 接在 ha 后面形成
链表 hc
{
hc=ha;p=ha;
while(p->next) p=p->next;
p->next=hb;
}//ListConcat
6. 在无头结点链表 L 的第 i 个元素之前插入元素
Status Insert(LinkList &L,int i,int b)//在无头结点链表 L 的第 i 个元素之前插入元素
b
{
p=L;q=(LinkList*)malloc(sizeof(LNode));
=b;
if(i==1)
{
=p;L=q; //插入在链表头部
}
else
{
while(--i>1) p=p->next;
q->next=p->next;p->next=q; //插入在第 i 个元素的位置
}
}//Insert
L 中删除第 i 个元素
Status Delete(LinkList &L,int i)//在无头结点链表 L 中删除第 i 个元素
{
if(i==1) L=L->next; //删除第一个元素
else
{
p=L;
while(--i>1) p=p->next;
p->next=p->next->next; //删除第 i 个元素
}
}//Delete
8. 删除元素递增排列的链表 L 中值大于 mink 且小于 maxk 的所有元素
2
Status Delete_Between(Linklist &L,int mink,int maxk)//删除元素递增排列的链表 L
中值大于 mink 且小于 maxk 的所有元素
{
p=L;
while(p->next->data<=mink) p=p->next; //p 是最后一个不大于 mink 的元素
if(p->next) //如果还有比 mink 更大的元素
{
q=p->next;
while(q->data<maxk) q=q->next; //q 是第一个不小于 maxk 的元素
p->next=q;
}
}//Delete_Between
L 中所有值相同的元素
Status Delete_Equal(Linklist &L)//删除元素递增排列的链表 L