往有序單迴圈連結串列的插入元素使原連結串列依舊有序
阿新 • • 發佈:2018-10-31
解題思路:與有序單鏈表類似,只不過加了尾指標指向連結串列頭部
#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)
{
node->next = node;
return node;
}
if (head->data > num)
{
node->next = head;
head->next = node;
return node;
}
TNode* pre = head;
TNode* cur = head->next;
while (cur != head&&cur->data < num)
{
pre = cur;
cur = cur->next;
}
//插入
node->next = cur;
pre->next = node;
return head;
}
int main()
{
int num;
TNode* head = NULL;
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; i < len; cur = cur->next,i++)
cout << cur->data<<endl;
return 0;
}
迴圈單鏈表的遍歷: