using namespace std;
struct Node
{
int data;
Node *next;
};
Node* ( void )
{
Node *head, *pre, *step;
head = new Node;
pre = head;
int number;
cin>>number;
while ( number != -1 )
{
step = new Node;
step->data = number;
cout<<"get current number"<<step->data<<endl;
pre->next = step;
pre = step;
cin>>number;
}
head = head->next;
pre->next = NULL;
return head;
}
int getNodeLength( Node *head)
{
int length = 0;
if ( head == NULL )
{
cout<<"Error:head is null"<<endl;
return 0;
}
Node *p;
p = head;
while ( p != NULL)
{
length++;
p = p->next;
}
return length;
}
void listNodeValues( Node *head, int length)
{
if ( head == NULL )
{
cout<<"Error: head is null"<<endl;
return;
}
Node *current;
current = head;
while ( current != NULL )
{
cout<<"the "<<length<<"'s number is "<<current->data<<endl;
length--;
current = current->next;
}
}
Node* deleteNodeChild( Node *head, int deleteNumber)
{
if ( head == NULL )
{
cout<<"Error: head is null"<<endl;
return head;
}
Node *current;
current = head;
if ( head->data == deleteNumber )
{
head = current->next;
delete(current);
} else
{
while ( current->next != NULL && current->next->data != deleteNumber )
{
current = current->next;
}
Node *deleteNode = current->next;
current->next = deleteNode->next;
delete(deleteNode);
}
return head;
}
Node* insertNodeChild( Node *head, int insertNodeBefore, int newNumber)
{
if ( head == NULL ){
head->data = newNumber;
return head;
}
Node *current;
current = new Node;
current->data = newNumber;
if ( head->data == insertNodeBefore )
{
current->next = head;
return current;
} else
{
Node *child = head;
while ( child->next != NULL && child->next->data != insertNodeBefore )
{gmia
child = child->next;
}
if ( child->next == NULL )
{
child->next = current;
current->next = NULL;
} else
{
current->next = child->next;
child->next = current;
}
}
return head;
}
Node* removeNodeHead(Node *head)
{
Node *p;
p = head->next;
delete(head);
head = p;
return head;
}
int getMiddleNumber(Node *head)
{
Node *moveFast, *moveSlow;
moveFast = head;
moveSlow = head;
while ( moveFast != NULL )
{
if ( moveFast->next == NULL || moveFast->next->next == NULL )
{
moveFast = NULL;
moveSlow = moveSlow->next;
} else
{
moveFast = moveFast->next->next;
moveSlow = moveSlow->next;
}
}
return moveSlow->data;
}
Node* reverseNode(Node *head)
{
Node *markNode, *tmpNode, *beforeNode;
markNode = head;
beforeNode = head;
while ( markNode->next != NULL )
{
tmpNode = markNode->next;
markNode->next = markNode->next->next;
tmpNode->next = beforeNode;
beforeNode = tmpNode;
}
head = beforeNode;
return head;
}
Node* sortNode(Node *head)
{
Node *p1,*p2;
int i, j, length,temp;
length = getNodeLength(head);
p1 = head->next;
for ( i = 1;i < length;i++ )
{
p2 = head;
for ( j = 0;j < i;j++ )
{
if ( p2->data > p1->data )
{
temp = p1->data;
p1->data = p2->data;
p2->data = temp;
}
p2 = p2->next;
}
p1 = p1->next;
}
return head;
}
int main ( int argc, char *argv[])
{
Node *head;
head = createNodeList();
head = sortNode(head);
int length = 0;
length = getNodeLength(head);
cout<<"get length "<<length<<endl;
listNodeValues(head, length);
return 0;
}
近期评论