OnTheWay2012
埋葬昨天的我,迎来重生的我!
posts - 15,  comments - 89,  trackbacks - 0

为了锻炼自己,写了下面几个函数。
(1)把一个unsigned int 转换成字符型的IP
(2)链表插入元素,升序

  1#include <WinSock2.h>
  2#include <iostream>
  3#include <assert.h>
  4
  5using namespace std;
  6
  7void ChangeToIp(unsigned int dwData, char *pStr)
  8{
  9    assert(NULL != pStr);
 10    if (NULL != pStr)
 11    {
 12        size_t index = 0;
 13        unsigned char *pCh = (unsigned char *)(&dwData);
 14        for (size_t i = 0 ; i < 4 ; i++)
 15        {
 16            unsigned short int nData(pCh[i]); 
 17            pStr[index++= (char)(nData / 100 + '0');
 18
 19            nData %= 100;
 20            pStr[index++= (char)(nData / 10 + '0');
 21
 22            pStr[index++= (char)(nData % 10 + '0');
 23
 24            if(3 > i)
 25            {
 26                pStr[index++= '.';
 27            }

 28        }

 29    }

 30}

 31
 32template<typename T>
 33struct Node
 34{
 35    Node() : m_Data(T())
 36    {
 37        m_pNext = NULL;
 38    }

 39
 40    T m_Data;
 41    Node<T> *m_pNext;
 42}
;
 43
 44template<typename T>
 45void InsertNode(Node<T> *pHead, const T &value)
 46{
 47    assert(NULL != pHead);
 48    if (NULL != pHead)
 49    {
 50        if(NULL != pHead->m_pNext)//除了头结点还有其他结点
 51        {
 52            while(NULL != pHead->m_pNext && pHead->m_pNext->m_Data < value)
 53            {
 54                pHead = pHead->m_pNext;
 55            }

 56        }

 57        else //只有头结点
 58        {
 59            ;
 60        }

 61
 62        Node<T> *pTemp = new Node<T>;
 63        pTemp->m_Data = value;
 64        pTemp->m_pNext = pHead->m_pNext;
 65        pHead->m_pNext = pTemp;
 66    }

 67}

 68
 69template<typename T>
 70void PrintLinkList(Node<T> *pHead)
 71{
 72    assert(NULL != pHead);
 73    if (NULL != pHead)
 74    {
 75        pHead = pHead->m_pNext;
 76        while(NULL != pHead)
 77        {
 78            cout<< pHead->m_Data <<endl;
 79            pHead = pHead->m_pNext;
 80        }

 81    }

 82}

 83
 84template<typename T>
 85void ReleaseLinkList(Node<T> *pHead)
 86{
 87    assert(NULL != pHead);
 88    if (NULL != pHead)
 89    {
 90        Node<T> *pNext = pHead->m_pNext;
 91        delete pHead;
 92        while(NULL != pNext)
 93        {
 94            pHead = pNext;
 95            pNext = pHead->m_pNext;
 96            delete pHead;
 97        }

 98    }

 99}

100
101void main()
102{
103    Node<int> *pHead = new  Node<int>;
104    InsertNode(pHead, -1);
105    InsertNode(pHead, -2);
106    InsertNode(pHead, 8);
107    InsertNode(pHead, 34);
108    InsertNode(pHead, 4);
109
110    PrintLinkList(pHead);
111
112    ReleaseLinkList(pHead);
113}
posted on 2010-05-25 20:37 OnTheWay 阅读(745) 评论(0)  编辑 收藏 引用 所属分类: 算法

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2010年5月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(4)

随笔分类

随笔档案

友情连接

搜索

  •  

最新评论

阅读排行榜

评论排行榜