请教下这段程序错在哪?关于排序问题
各种排序任务:用程序实现插入法排序、起泡法改进算法排序;
利用插入排序和冒泡法的改进算法,将用户随机输入的一列数按递增的顺序排好。
输入的数据形式为任何一个正整数,大小不限。
输出的形式:数字大小逐个递增的数列?
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define NULL 0
typedef struct LNode {
int data;
int num;
struct LNode *next;
}LNode, *pLinkList;
class LinkList
{
private:
pLinkList m_pList;
int m_listLength;
public:
LinkList(void);
~LinkList(void);
bool InitList ();
bool DestroyList ();
bool ClearList();
bool IsEmpty ();
int GetLength ();
bool ListAdd(int);
bool Sort_Insert(int &count);
int Sort_Quick_Partition(int,int,int &count);
void QSort(int,int,int &count);
void Sort_Quick(int &count);
int GetItem(int);
};
LinkList::LinkList()
{
m_pList = NULL;
m_listLength = 0;
InitList();
}
LinkList::~LinkList()
{
if (!DestroyList())
{
DestroyList();
}
}
//初始化,分配一个头节点。
bool LinkList::InitList()
{
if (!(m_pList = new LNode))
{
return false;
}
m_pList->next = NULL;
m_pList->data=0;
m_pList->num=0;
return true;
}
//销毁链表。
bool LinkList::DestroyList()
{
if (!ClearList()) {
return false;
}
delete m_pList;
return true;
}
//判断链表是否为空。若为空,返回true,否则返回false。
bool LinkList::IsEmpty() {
if (m_pList->next == NULL) {
return true;
}
return false;
}
//返回链表的中当前节点数。
int LinkList::GetLength() {
return m_listLength;
}
//将链表清空,释放当前所有节点。
bool LinkList::ClearList() {
if (m_pList == NULL) {
return false;
}
LNode *pTemp = NULL;
while (m_pList->next != NULL) {
pTemp = m_pList->next;
m_pList->next = pTemp->next;
delete pTemp;
}
m_listLength = 0;
return true;
}
//将position指定的节点内的数据设置为newData。
//第一个有效节点的position为1。
bool LinkList::SetNodeData(int position, int newData,int newNum) {
LNode *pTemp = NULL;
if (!(GetNode(position, &pTemp))) {
return false;
}
pTemp->data = newData;
pTemp->num = newNum;
return true;
}
//得到指定位置节点的数据。
//节点索引从1到listLength。
bool LinkList::GetNodeData(int position, int &data,int &num) {
LNode *pTemp = NULL;
if (!(GetNode(position, &pTemp))) {
return false;
}
data = pTemp->data;
num = pTemp->num;
return true;
}
bool LinkList::ListAdd(int adddata)
{
if(m_pList==NULL) return false;
pLinkList ptemp=m_pList;
pLinkList newp=new LNode;
while(ptemp->next!=NULL)
{
ptemp=ptemp->next;
}
ptemp->next=newp;
newp->next=NULL;
newp->data=adddata;
m_listLength++;
return true;
}
bool LinkList::Sort_Insert(int &count)
{
int i,j;
if(m_listLength==0) return false;
for(i=1;i<=m_listLength;i++)
{
//GetItem(0)=GetItem(i);
SetNodeData(0, GetItem(i),0);
count++;
if(GetItem(i)<GetItem(i-1))
{
for(j=i-1;GetItem(j)>GetItem(j-1);j--)
{
count++;
SetNodeData(j+1, GetItem(j),0);
}
//m_pList[j+1].data=m_pList[j].data;
SetNodeData(j+1, GetItem(0),0);
//m_pList[j+1].data=m_pList[0].data;
}
}
return true;
}
int LinkList::Sort_Quick_Partition(int low,int high,int &count)
{
int pivotkey;
SetNodeData(0, GetItem(low),0);
//m_pList[1].data=m_pList[low].data;
pivotkey=GetItem(low);
while(low<high)
{
while(low<high && GetItem(high)>=pivotkey) --high;
SetNodeData(low, GetItem(high),0);
//m_pList[low].data=m_pList[high].data;
while(low<high && GetItem(low)<=pivotkey) ++low;
SetNodeData(high, GetItem(low),0);
//m_pList[high].data=m_pList[low].data;
count++;
}
SetNodeData(low, GetItem(0),0);
//m_pList[low].data=m_pList[0].data;
return low;
}
void LinkList::QSort(int low,int high,int &count)
{
int pivotloc;
if(low<high)
{
pivotloc=Sort_Quick_Partition(low,high,count);
QSort(low,pivotloc-1,count);
QSort(pivotloc+1,high,count);
}
}
void LinkList::Sort_Quick(int &count)
{
QSort(1,m_listLength,count);
}
int LinkList::GetItem(int pos)
{
int i=0;
pLinkList ptemp=m_pList;
for(i=0;i<pos;i++)
{
ptemp=ptemp->next;
}
return ptemp->data;
//return m_list[i].data;
}
G:\hw\ada\sdad.cpp(116) : error C2039: 'SetNodeData' : is not a member of 'LinkList'
G:\hw\ada\sdad.cpp(19) : see declaration of 'LinkList'
G:\hw\ada\sdad.cpp(119) : error C2065: 'GetNode' : undeclared identifier
G:\hw\ada\sdad.cpp(132) : error C2039: 'GetNodeData' : is not a member of 'LinkList'
G:\hw\ada\sdad.cpp(19) : see declaration of 'LinkList'
执行 cl.exe 时出错.