#include <iostream>
#include <malloc.h>
using namespace std;
struct Node{
int data;
struct Node *next;
};
void traverse(Node *h)//遍历链表
{
Node *p;
p=h;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
cout<<endl;
return;
}
Node* createLinklist(int n)//创建链表
{
Node *h,*p,*last;
h=NULL;
int d;
for(int i=0;i<n;i++)
{
cin>>d;
p=(Node*)malloc(sizeof(Node));
p->data=d;
p->next=NULL;
if(h==NULL)
h=p;
else
last->next=p;
last=p;
}
return h;
}
int ListInsert(Node *h,int i,int e)//插入链表
{
Node *p,*s;
p=h;
int j=1;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)
return 0;
s=(Node*)malloc(sizeof(Node));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(Node *h,int i,int *e)//删除链表
{
Node *p,*q;
p=h;
int j=1;
while(p->next&&j<i)
{
p=p->next;
j++;
}
if(!p||j>=i)
return 0;
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return 1;
}
int ClearList(Node *h)//清空链表
{
Node *p, *q;
p=h->next;
while(p)
{
q=p->next;
free(p);
p=q;
}
h->next=NULL;
return 1;
}
typedef Node* LinkList//合并链表
void Combine(LinkList *L1,LinkList *L2){
LinkList p,q,s;
p=(*L1);
q=(*L2);
while(p->next){
while(q->next){
if(p->next->data==q->next->data)
break;
else
q=q->next;
}
if(q->next==NULL)
{
s=(LinkList)malloc(sizeof(Node));
s->data=p->next=>data;
s->next=NULL;
q->next=s;
}
p=p->next;
q=*L2;
}
}