1. 判断是不是只有一个头结点
2. 插入的元素是最小元素
3. 插入的元素在中间或者为最大者**
注:头结点需分配动态内存;插入的元素也要分配动态内存;
#include<iostream>
using namespace std;
typedef struct TNode
{
int data;
struct TNode* next;
}TNode;
TNode* insertNum(TNode* head, int num)
{
TNode* node = new TNode;
node->data = num;
node->next = NULL;
/* 第一种情况:只有一个头结点 */
if ( head ->next == head )
{
head->next=node;
node->next= head;
return head;
}
/* 第二种情况:插入的元素值为最小值 */
if (head->next->data > num)
{
node->next=head->next;
head->next = node;
return head;
}
TNode* pre = head;
TNode* cur = head->next;
/* 第三种情况: 插入的值在中间或者为最大值( cur=head) */
while ( cur->data < num && cur != head )
{
pre = cur;
cur = cur->next;
}
//插入
node->next = cur;
pre->next = node;
return head;
}
int main()
{
TNode* head=new TNode;
head->data=0;
head->next=head;
int A[] = { 0, 11, 3, 4, 3, 2, 10, 44 };
int len = sizeof(A) / sizeof(A[0]);
for (int i = 0; i < len; i++)
{
head = insertNum(head, A[i]);
}
int i = 0;
for (TNode* cur = head->next; i < len; cur = cur->next,i++)
cout << cur->data<<endl;
return 0;
}