未调试:
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode{
int data;
struct Lnode *next;//结构体的指针
}*LinkList;
LinkList L;
//1、fun:删除节点的数据为X的
//brief:@链表@x
//return:链表
LinkList DeleyX(LinkList &L,int X){
LinkList TempP;
TempP=L;
if(TempP->next==NULL){
return L;
}
while(TempP->next!=NULL){
if(TempP->next->data==X){
TempP->next=TempP->next->next;
free(TempP->next);
}
TempP=TempP->next;
}
return L;
}
//2、fun:删除节点最小的数据
//brief:@链表
//return:链表
LinkList DeleyMin(LinkList &L){
LinkList TempP;
TempP=L;
int TempNum=TempP->data;
while(TempP->next!=NULL){
if(TempP->data<TempNum){
TempNum=TempP->data;
}
TempP=TempP->next;
}
return L;
}
//3、
//4、fun:删除链表中的关于两个值之间的数值
//brief:@链表@数值1@数值2
//return:链表
LinkList DeleyXY(LinkList &L,int X,int Y){
LinkList TempP;
TempP = L->next;
while(TempP->next!=NULL){
if(TempP->data>X&&TempP->data<Y){
TempP->next=TempP->next->next;
free(TempP);
}
TempP=TempP->next;
}
return L;
}
//6fun:将数组中的元素拆分成两个链表
//brief@链表一@链表二@链表三
//return:bool
bool DeviseDL(LinkList &A,LinkList &B,LinkList &C){
LinkList TempP,TempM;//用于表示相邻的两个数据,和遍历数据
TempP=A->next;
TempM=A->next->next;
LinkList TempB,TempC;
while(TempP!=NULL&&TempM!=NULL){
TempB=(LinkList)malloc(sizeof(Lnode));
TempB->data=TempP->data;
TempP=TempP->next;
TempC=(LinkList)malloc(sizeof(Lnode));
TempC->data=TempM->data;
TempM=TempP->next->next;
}
return true;
}
//fun:除去递增链表中重复的数据
//@链表
//return:链表
LinkList DeleyRe(LinkList &L){
LinkList Temp;
Temp = L;
if(Temp==NULL){
return L;
}
while(Temp->next!=NULL){
if(Temp->data==Temp->next->next->data){
Temp->next=Temp->next->next->next;
free(Temp->next);
}
Temp=Temp->next;
}
return L;
}
//8fun:BC有序递增链表中的公共元素组成A
//brief@链表@链表@链表
//return true;
bool IncreaceDL(LinkList &A,LinkList &B,LinkList &C){
LinkList j,k,l;
j=A->next;
k=B->next;
l=C->next;
int a=0;
int s=0;
int d=0;
while(k->next!=NULL){
a=j->data;
s=k->data;
while(l->next!=NULL){
if(a==s){
LinkList Temp;
Temp=(LinkList)malloc(sizeof(Lnode));
Temp->next=NULL;
Temp->data=s;
}
}
k=k->next;
l=l->next;
}
return true;
}
//fun:a和b中的相同元素组合成一个集合在放入A中
//brief;@a@b
//return a
LinkList JiHeAB(LinkList &A,LinkList &B){
LinkList p,q;
p=p->next;
q=q->next;
LinkList j,k;
j=p;
while(p&&q){
if(p->data==q->data){
//保留 p的值
j->next=p;
j=p;
p=p->next;
//释放 q的值
k=q;
q=q->next;
free(k);
}
else if(p->data<q->data){
k=p;
p=p->next;
free(k);
} else{
k=q;
q=q->next;
free(k);
}
}
while(p){
//释放剩余p,当q提前结束
k=p;
p=p->next;
free(k);
}
while(q){
//释放剩余q,当p提前结束
k=q;
q=q->next;
free(k);
}
j->next=NULL;
free(q);
return p;
}
//fun:ab为两个链表,判断b是不是啊的子链表
//brief@链表a@链表b
//return: true或者false
bool LianXu(LinkList &A,LinkList &B){
LinkList p,q;
p=A;
q=B;
int len;
while(p->next!=NULL){
if(p->data==q->data){
while(q->next!=NULL){
if(p->data!=q->data){
return false;
}
}
return true;
}
p=p->next;
}
}
int main(){
}