vc++6.0中的,老师给的题目,哪位大侠可以帮忙告诉我呀。求教呀!!
3、假设以带头结点的单循环链表做非递减有序
线性表的存储结构。请设计一个时间复杂度为
O(n2) ,删除表中所有数值相同的多余元素,并
释放结点空间。例如:
(7,10,10,21,30,42,42,42,51,70)
经算法操作后变为 :
(7,10,21,30,42,51,70)
我是新手,好多不懂的、、就.cpp和.h的区别还都不是很了解,,,
求高手不吝赐教、、、
[解决办法]
有帮人做作业了,罪过
typedef struct _MyListNode{ int nData; struct _MyListNode * pNext;} MyListNode, *PMyListNode;class MyList{public: MyList() { pHead = new MyListNode(); pHead->nData = 0; pHead->pNext = NULL; pTail = NULL; } ~MyList() { MyListNode * pTmp = pHead; while (pTmp != NULL) { pHead = pTmp->pNext; delete pTmp; pTmp = pHead; } pHead = NULL; } void Append(int num) { MyListNode * pTmp = new MyListNode(); pTmp->nData = num; pTmp->pNext = NULL; if (pTail != NULL) { pTail->pNext = pTmp; } else { pHead->pNext = pTmp; } pTail = pTmp; } void Print() { MyListNode * pTmp = pHead->pNext; while (pTmp != NULL) { cout << pTmp->nData << " "; pTmp = pTmp->pNext; } cout << endl; } void RemoveRepeat() { MyListNode * pNode = pHead->pNext; while (pNode != NULL) { MyListNode * pTmp = pNode->pNext; while (pTmp != NULL && pNode->nData == pTmp->nData) { pNode->pNext = pTmp->pNext; delete pTmp; pTmp = pNode->pNext; } pNode = pTmp; } }private: MyListNode * pHead; MyListNode * pTail;};int main(){ MyList lst; lst.Append(7); lst.Append(10); lst.Append(10); lst.Append(21); lst.Append(30); lst.Append(42); lst.Append(42); lst.Append(42); lst.Append(51); lst.Append(70); lst.Print(); lst.RemoveRepeat(); lst.Print(); return 0;}