C++実装チェーンテーブル
Dev C++は作成、追加、削除、変更、検索、最大検索、最小検索、空置き、配列回転チェーンテーブル、チェーンテーブルのマージを実現
#include
#include
#include
using namespace std;
typedef struct LNode
{
int data;
LNode *next;
} LNode;
void Print(LNode *L)
{
cout<next;
while(p!=NULL)
{
cout<data<next;
}
cout<next = NULL;
}
//
void Insert(LNode *&L,int pos,int e)
{
LNode *p = L;
for(int i = 0; inext;
}
LNode *q = (LNode*)malloc(sizeof(LNode));
q->data = e;
q->next = NULL;
q->next = p->next;
p->next = q;
return ;
}
//
void InsertHead(LNode *&L,int e)
{
LNode *p = (LNode*)malloc(sizeof(LNode));
p->next = NULL;
p->data = e;
p->next = L->next;
L->next = p;
return ;
}
//
void InsertTail(LNode *&L,int e)
{
LNode *r;
LNode *p = L;
while(p->next!=NULL)
p = p->next;
r = p;
LNode *q = (LNode*)malloc(sizeof(LNode));
q->data = e;
q->next = NULL;
r->next = q;
return ;
}
// ,flag 0 , 1
void InsertArray(LNode *&L,int A[],int n,int flag)
{
if(flag == 0)
for(int i = 0; inext!=NULL)
{
if(p->next->data == e)
{
q = p->next;
p->next = q->next;
free(q);
return ;
}
p = p->next;
}
cout<next!=NULL)
{
q = p->next;
p->next = q->next;
free(q);
}
return ;
}
void isEmpty(LNode *L)
{
if(L->next==NULL)
cout<next;
int len = 0;
while(p != NULL)
{
++len;
p = p->next;
}
return len;
}
void Change(LNode *L,int e,int c)
{
LNode *p = L->next;
while(p!=NULL)
{
if(p->data == e)
{
p->data = c;
return ;
}
p = p->next;
}
cout<next;
while(p!=NULL)
{
if(p->data == e)
return n;
p = p->next;
++n;
}
// cout<next;;
LNode *p = L->next;
while(p != NULL)
{
if(p->data > max->data)
max = p;
p = p->next;
}
return max->data;
}
int FindMin(LNode *L)
{
LNode *min = L->next;
LNode *p = L->next;
while(p!=NULL)
{
if(p->datadata)
min = p;
p = p->next;
}
return min->data;
}
//L1 L2 ,
void Merge(LNode *L,LNode *L1,LNode *L2)
{
LNode *p = L;
LNode *p1 = L1->next;
LNode *p2 = L2->next;
LNode *q, *r = p;
while(p1!=NULL && p2!=NULL)
{
if(p1->data >= p2->data)
{
q = p2;
p2 = p2->next;
q->next = r->next;
r->next = q;
r = r->next;
}
else
{
q = p1;
p1 = p1->next;
q->next = r->next;
r->next = q;
r = r->next;
}
}
if(p1!=NULL)
r->next = p1;
if(p2 != NULL)
r->next = p2;
return ;
}
int main()
{
LNode *L;
InitList(L);
InsertHead(L,2222);
InsertHead(L,123);
InsertHead(L,456);
Print(L);
cout<