データ構造——11順序両方向リンク表にノードを挿入する
2813 ワード
双方向チェーン表——順序正しい双方向リストにノードを挿入する
双方向チェーン表——順序正しい双方向リストにノードを挿入する
双方向チェーン表——順序正しい双方向リストにノードを挿入する
#include
using namespace std;
struct node //node , node , / node
{
int x;
node *left; // ,
node *right;
};
node* create(int n) // , n , node*
{
if(n<1) // ,
{
cout<x=rand()%100;
p->right=temp; // p right temp,
temp->left=p; //temp left p, left
p=temp; // p temp, p
}
p->right=NULL; // ,p->right , right null
head->right->left=NULL; // , left null
return head;
}
void display(node *head) //
{
node *p;
p=head->right; //p , for
if(p==NULL)
cout<x<right;
}
cout<right; //p , for
int temp; //
while(p) //
{
s=p->right; // p
while(s)
{
if(p->x > s->x) // x,
{
temp=p->x;
p->x=s->x;
s->x=temp;
}
s=s->right; //
}
p=p->right; //
}
}
void insert(node *head, int n) // n head
{
node *p,*s;
p=head; //p , for
while(p->right)
{
if(p->right->x > n) // n ,
{
node *temp=new node;
temp->x=n;
s=p->right; // node s
temp->right=p->right;
p->right=temp; // ,
s->left=temp; //
temp->left=p;
break;
}
p=p->right;
}
if(p->right==NULL) // n ,
{
node *temp=new node;
temp->x=n;
p->right=temp; //
temp->right=NULL; //right null
temp->left=p; //
}
}
void insert1(node *head, int n) // , ,
{
node *s,*p=head; //p , for
node *t=new node;
t->x=n;
s=p->right; // node s
t->right=p->right; // ,
p->right=t;
s->left=t; //
t->left=p;
sort(head); //
}
int main()
{
node *list;
list=create(10); //
display(list); // , ,
sort(list); // ,
display(list); //
insert(list,-2); //
display(list); //
insert1(list,99); //
display(list); //
return 0;
}