-
-
- // func2-3.cpp 几个常用的函数
- Status equal(ElemType c1,ElemType c2)
- { // 判断是否相等的函数
- if(c1==c2)
- return TRUE;
- else
- return FALSE;
- }
- int comp(ElemType a,ElemType b)
- { // 根据a<、=或>b,分别返回-1、0或1
- if(a==b)
- return 0;
- else
- return (a-b)/abs(a-b);
- }
- void print(ElemType c)
- {
- printf("%d ",c);
- }
- void print2(ElemType c)
- {
- printf("%c ",c);
- }
- void print1(ElemType &c)
- {
- printf("%d ",c);
- }
- int Malloc(SLinkList space) // 算法2.15
- { // 若备用链表非空,则返回分配的结点下标(备用链表的第一个结点),否则返回0
- int i=space[0].cur;
- if(i) // 备用链表非空
- space[0].cur=space[i].cur; // 备用链表的头结点指向原备用链表的第二个结点
- return i; // 返回新开辟结点的坐标
- }
- void Free(SLinkList space,int k) // 算法2.16
- { // 将下标为k的空闲结点回收到备用链表(成为备用链表的第一个结点)
- space[k].cur=space[0].cur; // 回收结点的"游标"指向备用链表的第一个结点
- space[0].cur=k; // 备用链表的头结点指向新回收的结点
- }
-
- // algo2-6.cpp和bo7-2.cpp用到
- void InsertAscend(LinkList &L,ElemType e,int(*compare)(ElemType,ElemType))
- { // 按关键字非降序将e插入表L。函数compare()返回值为:形参1的关键字-形参2的关键字
- LinkList q=L;
- if(!L||compare(e,L->data)<=0) // 链表空或e的关键字小于等于首结点的关键字
- ListInsert(L,1,e); // 将e插在表头,在bo2-8.cpp中
- else
- {
- while(q->next&&compare(q->next->data,e)<0) // q不是尾结点且q的下一结点关键字<e的关键字
- q=q->next;
- ListInsert(q,2,e); // 插在q所指结点后(将q作为头指针)
- }
- }
- LinkList Point(LinkList L,ElemType e,Status(*equal)(ElemType,ElemType),LinkList &p)
- { // 查找表L中满足条件的结点。如找到,返回指向该结点的指针,p指向该结点的前驱(若该结点是
- // 首元结点,则p=NULL)。如表L中无满足条件的结点,则返回NULL,p无定义。
- // 函数equal()的两形参的关键字相等,返回OK;否则返回ERROR
- int i,j;
- i=LocateElem(L,e,equal);
- if(i) // 找到
- {
- if(i==1) // 是首元结点
- {
- p=NULL;
- return L;
- }
- p=L;
- for(j=2;j<i;j++)
- p=p->next;
- return p->next;
- }
- return NULL; // 没找到
- }
- Status DeleteElem(LinkList &L,ElemType &e,Status(*equal)(ElemType,ElemType))
- { // 删除表L中满足条件的结点,并返回TRUE;如无此结点,则返回FALSE。
- // 函数equal()的两形参的关键字相等,返回OK;否则返回ERROR
- LinkList p,q;
- q=Point(L,e,equal,p);
- if(q) // 找到此结点,且q指向该结点
- {
- if(p) // 该结点不是首元结点,p指向其前驱
- ListDelete(p,2,e); // 将p作为头指针,删除第2个结点
- else // 该结点是首元结点
- ListDelete(L,1,e);
- return TRUE;
- }
- return FALSE;
- }
func2-1.cpp && func2-2.cpp && func2-3.cpp
最新推荐文章于 2024-05-12 11:54:18 发布