#include<iostream>
using namespace std;
#define SIZE 10
int dex=0;
int data[10]={0,1,2,2,3,4,5,6,4,5};
typedef struct node{
int value;
struct node *next;
struct node *pre;
}node;
node nil;
node *NIL;
node hashTable[SIZE];
node hashIndex[SIZE];
void init(){
node nil;
node *NIL;
NIL=&nil;
NIL->next=NIL->pre=NIL;
}
node *getNewNode()
{
return &hashIndex[dex++];
}
void insertAfterNode(node *dstNode,node *newNode)
{
newNode->next=dstNode->next;
newNode->pre=dstNode;
dstNode->next=newNode;
dstNode->next->pre=newNode;
}
void insertAfterFront(node *newNode)
{
insertAfterNode(NIL,newNode);
}
void deleteNode(node *targetnode)
{
targetnode->next->pre=targetnode->pre;
targetnode->pre->next=targetnode->next;
}
node *searchNode(int k)
{
node *x=NIL->next;
while(x!=NIL&&x->value!=k)
{
x=x->next;
}
return x;
}
void insertSort(int data[],int N)
{
for(int i=1;i<N;i++)
{
int key=data[i];
int j;
for( j=i-1;j>=0;j--)
{
if(data[j]>key)
{
data[j]=data[j+1];
}else
{
break;
}
}
data[j+1]=key;
}
}
void insertSort()
{
node *curNode=NIL->next->next;
node *tempNode;
while(curNode!=NIL)
{
node *dstNode=NIL->next;
if(curNode!=dstNode&&dstNode->value<curNode->value)
{
dstNode=dstNode->next;
}
dstNode=dstNode->pre;
tempNode=curNode->next;
deleteNode(curNode);
insertAfterNode(dstNode,curNode);
curNode=tempNode;
}
}
int main()
{
node *dstNode=NIL->next;
for(int i=0;i<10;i++)
{
node *newNode=getNewNode();
dstNode->value=data[i];
insertAfterNode(dstNode, newNode);
dstNode=dstNode->next;
}
}