📄 liststruct.cpp
字号:
//define the functions about List
#include "stdafx.h"
#include "GlobalDefining.h"
#include "ListStruct.h"
#include <iostream.h>
//有关LinkList的基本操作包括:
/*
STATUS InitList(LinkList &L);
void DestroyList(LinkList &L);
STATUS InsertOrderList(LinkList &L, int data); //有序插入,按非递减插入
void MergeList(LinkList &L3, LinkList &L1, LinkList &L2); //将L1和L2归并入L3
*/
STATUS InitList(LinkList &L)
{
L=new LNode;
if(L==NULL)
return OVERFLOW;
L->next = NULL;
return OK;
}
//初始化一个带有头结点的链表
void DestroyList(LinkList &L)
{
LNode *p;
while((L->next)!=NULL)
{
p=L->next;
L->next=p->next;
delete p;
}
delete L;
L=NULL;
}
//逐个销毁链表L中的每个结点,L的头结点也要被销毁。
STATUS InsertOrderList(LinkList &L, int data)
{
LNode *p,*s;
p=L;
s=new LNode;
if(s==NULL)
return ERROR;
s->data=data;
s->next=NULL;
while(p->next!=NULL&&p->next->data<data)
p=p->next;
s->next=p->next;
p->next=s;
//将数据元素data插入L中,插入时按非递减有序插入,即
//逐个检查L中的每个结点,当发现某结点的数据域值大于data时,
//就将新结点插入到此结点之前。若没有发现大于data的结点,就将新结点
//加到链表的末尾。
return OK;
}
void MergeList(LinkList &L3, LinkList &L1, LinkList &L2)
{
LNode *pa,*pb,*pc;
pa=L1->next;
pb=L2->next;
pc=L1;
L3=pc;
while(pa!=NULL&&pb!=NULL)
{
if(pa->data<=pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
if(pa==NULL)
pc->next=pb;
else
pc->next=pa;
delete L2;
L2=NULL;
//归并链表L1和L2。L3指向归并后的连表。
}
////////////////////////////////
void printList(LinkList &L)
{
LNode *p;
p=L;
while(p->next!=NULL)
{
cout<<p->next->data<<",";
p=p->next;
}
cout<<endl;
}
//将链表输出
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -