静态链表实现直接插入排序(C++)
是静态链表和直接插入排序的结合
链表的数据结构,直接插入排序算法的思想
// 静态链表插入排序.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class node
{
public :
int data;
node *next;
};
void staticlinkinsertsorting(int *data, int size) //静态链表插入排序
{
node *headp = new node, *searchp, *followp, *newnodep;
headp->next = NULL;
newnodep = new node;
newnodep->data = data[0];
newnodep->next = NULL; //第一个元素
headp->next = newnodep; //实例化headp
for (int i = 1; i < size; i++)
{
newnodep = new node;
newnodep->data = data[i];
newnodep->next = NULL;
followp = headp;
searchp = headp->next;
while (searchp != NULL)
{
if (newnodep->data >= searchp->data)
{
followp = searchp;
searchp = searchp->next;
}
else
{
newnodep->next = searchp;
followp->next = newnodep;
break;
}
}
} //静态链表插入排序算法
searchp = headp->next;
while (searchp != NULL)
{
cout << searchp->data << " ";
searchp = searchp->next;
}
cout << endl; //打印排序后的链表
}
int main()
{
int data[] = { 14,5,10,11,6,1,10 };
int size = sizeof(data) / sizeof(data[0]);
staticlinkinsertsorting(data, size);
system("pause");
return 0;
}