链表的相关算法及应用

Posted hekuiflye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表的相关算法及应用相关的知识,希望对你有一定的参考价值。

问题六 :将两个单链表的相同的值,组成一个新的链表 

问题七 :递增输出单链表 并释放节点 

问题八 :将一个带头结点的单链表A 分解为两个带头结点的单链表A和B使A中保存原来序号为奇数的元素,B中保存原来序号为偶数的元素

问题九 :将C={a1,b1,a2,b2,...,an,bn},拆分为 A={a1,a2,...,an} B={b1,b2,...,bn}; 

问题十 :去除递增有序链表中的重复元素 

 

//问题六 将两个单链表的相同的值,组成一个新的链表 
LinkList common(LinkList L1,LinkList L2){
LNode *t1=L1->next,*t2=L2->next;
bool yes = 0;
LNode *h = (LNode*)malloc(sizeof(LNode));
h->next=NULL;
while(t1){
yes=0;
t2=L2->next;
while(t2){
if(t1->data==t2->data){
yes=1;
break;
}
t2=t2->next;
}
if(yes){
LNode *node = (LNode*)malloc(sizeof(LNode));
node->data=t1->data;
node->next=h->next;
h->next = node;
}
t1=t1->next;
}
return h;
}

 

//问题七 递增输出单链表 并释放节点
void min_del(LinkList &L){
LNode *pre=L,*p=L->next,*t;
while(L->next!=NULL){
pre=L;
p=L->next;
while(p->next!=NULL){
if(p->next->data<pre->next->data){
pre=p;
}
p=p->next;
}
t=pre->next;
printf("%d ",t->data);
pre->next=t->next;
free(t);
}
free(L);
}

 

//问题八 将一个带头结点的单链表A 分解为两个带头结点的单链表A和B
//    使A中保存原来序号为奇数的元素,B中保存原来序号为偶数的元素
LinkList disCreate(LinkList &A){
LinkList B = (LinkList)malloc(sizeof(LNode));
B->next=NULL;
LNode *a=A,*b=B;
LNode *r,*p=A->next;
int index = 1;
while(p!=NULL){
if(index%2){
a->next=p;
a=p;
}else{
b->next=p;
b=p;
}
index++;
p=p->next;
}
a->next=NULL;
b->next=NULL;

return B;
}

 

//问题九 将C={a1,b1,a2,b2,...,an,bn},拆分为 A={a1,a2,...,an} B={b1,b2,...,bn}; 
LinkList disCreate2(LinkList &A){
LinkList B = (LinkList)malloc(sizeof(LNode));
B->next=NULL;
LNode *r,*a=A;
int index = 1;
LNode *p = A->next;
while(p!=NULL){
r=p->next;
if(index%2){
a->next=p;
a=p;
}else{
p->next=B->next;
B->next=p;

}
p=r;
index++;
}
a->next=NULL;
return B;    
}

 

//问题十 去除递增有序链表中的重复元素 
void moveRepeat(LinkList &L){
LNode *pre=L,*p=L->next;
while(p!=NULL){
if(p->next!=NULL){
if(p->data!=p->next->data){
pre->next=p;
pre=p;
}
}else{
pre->next=p;
pre=p;
}
p=p->next;
}
pre->next=NULL;
}

 

以上是关于链表的相关算法及应用的主要内容,如果未能解决你的问题,请参考以下文章

常用算法思路分析系列链表相关高频题集

单链表及单链表的三个初级算法思想

单链表及单链表的三个初级算法思想

数据结构22:数组和广义表

Python数据结构与算法(附录)——块状链表的动态调整

[算法] leetcode单链表相关题目详解