链式存储线性表基本操作及有序单链表合并成有序单列表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n++;
}
if (p==NULL)
return(0);
else
return(n);
}
int ListInsert(LinkList *&L,int i,ElemType e)
{
int j=0;
LinkList *p=L,*s;
while (j<i-1 && p!=NULL)
{
j++;
p=p->next;
if(p1->value < p2->value)
{
ph = p1;
p = p1;
p1 = p1->next;
}
else
{
ph = p2;
p = p2;
p2 = p2->next;
}
while(p1 && p2)
{
if(p1->value < p2->value)
{
p->next = p1;
p = p1;
}
if (p==NULL)//未找到第i-1个结点
return 0;
else//找到第i-1个结点*p
{
s=(LinkList *)malloc(sizeof(LinkList));//创建新结点*s
s->data=e;
s->next=p->next;//将*s插入到*p之后
p->next=s;
return 1;
typedef char ElemType;
typedef struct LNode//定义单链表结点类型
{
ElemType data;
struct LNode *next;
} LinkList;
void InitList(LinkList *&L)
{
L=(LinkList *)malloc(sizeof(LinkList));//创建头结点
L->next=NULL;
}
void DestroyList(LinkList *&L)
{
LinkList *p=L,*q=p->next;
while (q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}
int ListEmpty(LinkList *L)
{
return(L->next==NULL);
}
int ListLength(LinkList *L)
{
LinkList *p=L;int i=0;
while (p->next!=NULL)
{
i++;
p=p->next;
}
return(i);
}
void DispList(LinkList *L)
{
LinkList *p=L->next;
while (p!=NULL)
p1 = p1->next;
}elBiblioteka e{p->next = p2;
p = p2;
p2 = p2->next;
}
}
if(!p1) p->next = p2;
if(!p2) p->next = p1;
return ph;
}
//文件名:algo2-2.cpp
#include <stdio.h>
#include <malloc.h>
if (p==NULL)
return 0;
else
{
e=p->data;
return 1;
}
}
int LocateElem(LinkList *L,ElemType e)
{
LinkList *p=L->next;
int n=1;
while (p!=NULL && p->data!=e)
{
p=p->next;
//合并两个有序单链表,并返回合并后新链表的头指针
LNode MergeLink(LNode p1,LNode p2)
{
if(!p1) return p1; //如果链表为空,则直接返回另一个链表
if(!p2) return p2; //如果链表为空,则直接返回另一个链表
LNode ph, p; //ph合并后新链表的头指针
{
q=p->next;//q指向要删除的结点
if (q==NULL) return 0;
e=q->data;
p->next=q->next;//从单链表中删除*q结点
free(q);//释放*q结点
return 1;
}
}
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
int GetElem(LinkList *L,int i,ElemType &e)
{
int j=0;
LinkList *p=L;
while (j<i && p!=NULL)
{
j++;
p=p->next;
}
}
}
int ListDelete(LinkList *&L,int i,ElemType &e)
{
int j=0;
LinkList *p=L,*q;
while (j<i-1 && p!=NULL)
{
j++;
p=p->next;
}
if (p==NULL)//未找到第i-1个结点
return 0;
else//找到第i-1个结点*p
相关文档
最新文档