⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 liststruct.cpp

📁 编写程序
💻 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 + -