?? main2-6.cpp
字號:
// main2-6.cpp 檢驗bo2-6.cpp的主程序
#include"c1.h"
typedef int ElemType;
#include"c2-5.h"
#include"bo2-6.cpp"
Status compare(ElemType c1,ElemType c2) // c1等于c2
{
if(c1==c2)
return TRUE;
else
return FALSE;
}
int cmp(ElemType a,ElemType b)
{ // 根據a<、=或>b,分別返回-1、0或1
if(a==b)
return 0;
else
return (a-b)/abs(a-b);
}
void visit(ElemType c)
{
printf("%d ",c);
}
void main()
{
Link p,h;
LinkList L;
Status i;
int j,k;
i=InitList(L);
if(!i) // 初始化空的線性表L不成功
exit(FALSE); // 退出程序運行
for(j=1;j<=2;j++)
{
MakeNode(p,j); // 生成由p指向、值為j的結點
InsFirst(L,L.tail,p); // 插在表尾
}
OrderInsert(L,0,cmp); // 按升序插在有序表頭
for(j=0;j<=3;j++)
{
i=LocateElem(L,j,p,cmp);
if(i)
printf("鏈表中有值為%d的元素。\n",p->data);
else
printf("鏈表中沒有值為%d的元素。\n",j);
}
printf("輸出鏈表:");
ListTraverse(L,visit); // 輸出L
for(j=1;j<=4;j++)
{
printf("刪除表頭結點:");
DelFirst(L,L.head,p); // 刪除L的首結點,并以p返回
if(p)
printf("%d\n",GetCurElem(p));
else
printf("表空,無法刪除 p=%u\n",p);
}
printf("L中結點個數=%d L是否空 %d(1:空 0:否)\n",ListLength(L),ListEmpty(L));
MakeNode(p,10);
p->next=NULL; // 尾結點
for(j=4;j>=1;j--)
{
MakeNode(h,j*2);
h->next=p;
p=h;
} // h指向一串5個結點,其值依次是2 4 6 8 10
Append(L,h); // 把結點h鏈接在線性鏈表L的最后一個結點之后
OrderInsert(L,12,cmp); // 按升序插在有序表尾頭
OrderInsert(L,7,cmp); // 按升序插在有序表中間
printf("輸出鏈表:");
ListTraverse(L,visit); // 輸出L
for(j=1;j<=2;j++)
{
p=LocateElem(L,j*5,compare);
if(p)
printf("L中存在值為%d的結點。\n",j*5);
else
printf("L中不存在值為%d的結點。\n",j*5);
}
for(j=1;j<=2;j++)
{
LocatePos(L,j,p); // p指向L的第j個結點
h=PriorPos(L,p); // h指向p的前驅
if(h)
printf("%d的前驅是%d。\n",p->data,h->data);
else
printf("%d沒前驅。\n",p->data);
}
k=ListLength(L);
for(j=k-1;j<=k;j++)
{
LocatePos(L,j,p); // p指向L的第j個結點
h=NextPos(p); // h指向p的后繼
if(h)
printf("%d的后繼是%d。\n",p->data,h->data);
else
printf("%d沒后繼。\n",p->data);
}
printf("L中結點個數=%d L是否空 %d(1:空 0:否)\n",ListLength(L),ListEmpty(L));
p=GetLast(L); // p指向最后一個結點
SetCurElem(p,15); // 將最后一個結點的值變為15
printf("第1個元素為%d 最后1個元素為%d\n",GetCurElem(GetHead(L)->next),GetCurElem(p));
MakeNode(h,10);
InsBefore(L,p,h); // 將10插到尾結點之前,p指向新結點
p=p->next; // p恢復為尾結點
MakeNode(h,20);
InsAfter(L,p,h); // 將20插到尾結點之后
k=ListLength(L);
printf("依次刪除表尾結點并輸出其值:");
for(j=0;j<=k;j++)
if(!(i=Remove(L,p))) // 刪除不成功
printf("刪除不成功 p=%u\n",p);
else
printf("%d ",p->data);
MakeNode(p,29); // 重建具有1個結點(29)的鏈表
InsFirst(L,L.head,p);
DestroyList(L); // 銷毀線性鏈表L
printf("銷毀線性鏈表L之后: L.head=%u L.tail=%u L.len=%d\n",L.head,L.tail,L.len);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -