VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
49_avatar_small 楼主: Rainsmiling

[分享] Windows API一日一练

  [复制链接]
68_avatar_middle
在线会员 发表于 2011-7-29 13:30:10 | 显示全部楼层
学习下哦。谢谢
45_avatar_middle
在线会员 发表于 2011-7-30 15:09:18 | 显示全部楼层
看看看看看看看看看看看看看
63_avatar_middle
在线会员 发表于 2011-7-30 20:01:57 | 显示全部楼层
这个名字很熟悉啊,我下载一下。
32_avatar_middle
在线会员 发表于 2011-7-31 08:23:04 | 显示全部楼层
看看,非常感谢
61_avatar_middle
在线会员 发表于 2011-7-31 22:49:43 | 显示全部楼层
#include <iostream>
using namespace std;

/////////结点///////
struct Node
{
        int data; //数据
        Node* next;//下一个结点
  
};
/////////////单链表/////////
class LinkList
{
public:
         void Init();
         void Create(int n); //创建带n个数据的单链表
         void Dis();  //输出结果
         bool Insert(int i, int data); //在索引为i的位置插入数据为data的结点
         bool Delete(int i); //删除索引为i的结点
         void Destroy(); //销毁链表
         int  GetLen(); //长度
         void Merge(LinkList& list); //归并单链表
         void Back(); //就地反转
         void Sort(); //排序
         bool HaveCircle(); //是否含有环
         Node* GetNode(); //获取头结点
private:
        Node* head; //头结点

};

///////////////////////单链表实现////////////////
void LinkList::Init()
{
        head = new Node();
        head->next = NULL;
}
void LinkList::Create(int n)
{
        Node* p = head;
        for (int i = 1 ; i <= n; ++i)
        {
                Node* temp = new Node();
                temp->data = i ;
                temp->next =NULL;
                p->next = temp;
                p = temp;

        }
        

        
}

void LinkList::Dis()
{  
        Node* p = head->next;
        while(p)
        {
                cout<<p->data<<"\t";
                p = p->next;
        }
        cout<<endl;
}

bool LinkList::Insert(int i, int data)
{
        if (i <0 || i > GetLen())
        {
                return false;
        }
        Node* p = head;
        Node* q = head;
        for (int j = 0; j<i; j++)
        {
            q = p->next;
                p = p->next;

        }
        Node* InsertNode = new Node;
        InsertNode->data = data;
        InsertNode->next = q->next;
        q->next = InsertNode;
        return true;
}

bool LinkList::Delete(int i)
{
        if (i < 0 || i >= GetLen())
        {
      return false;
        }
        Node* p = head;
        Node* q  = head;

        for (int j = 0; j<i; j++)
        {
       q = p->next;
           p = p->next;
           
        }
   Node* DelNode = q->next;
   q->next = DelNode->next;
   delete DelNode;
   return true;

}

void LinkList::Destroy()
{
  Node* p = head->next;
  
  while(p)
  {
          Node* temp = p;
          p = p->next;
          delete temp;
  }
  delete head;
  head->next = NULL;
  
}

int LinkList::GetLen()
{
        int count = 0;
        Node* p = head->next;
        while(p)
        {
                p = p->next;
                ++count;
        }
        return count;
}
void LinkList::Merge(LinkList& list)
{
  
        Node* p = head->next;
        while (p->next)
        {
                p = p->next;
        }
   Node* listNode = list.GetNode();
   p->next = listNode->next;
   
   

}

Node* LinkList::GetNode()
{
        return head;
}

void LinkList::Sort()
{
        //选择排序
    Node* p = head->next;
        while(p)
        {
                Node* small = p;
                Node* q = p->next;
                while(q)
                {
          if (q->data < small->data)
          {
                          small = q;

          }

                  q = q->next;
                }

                if (p != small)
                {
                        int temp;
                        temp = p->data;
                        p->data = small->data;
                        small->data = temp;
                }

                p = p->next;
        }

        
   
}

void LinkList::Back()  
{
        /*先把原来的链表头结点断开
         *建立一个新的链表,然后把原来的链表插入到新链表的头部
         *最后把原来链表头部指向新链表,最后注意要释放新链表的头部
         *也就是最后一个元素**************************************/
        LinkList tempList;
        tempList.Init();
        Node* TempNode = tempList.GetNode();
        Node* n = TempNode;
        Node* p = head->next;
        while(p)   
        {
                Node* q = p->next;
        Node* temp = p;
                temp->next = TempNode;
                temp->data = p->data;
        TempNode = temp;
                p = q;
               
        }
        
   
    head->next = TempNode;
        Delete(GetLen() - 1);
        
        

}

bool LinkList::HaveCircle()
{
        Node* p = head;
        Node* q = head;
        while ((p->next != NULL) && (q->next != NULL) && (q->next->next != NULL) )
        {
       p = p->next;
           q = q->next->next;
           if (p == q)
           {
                   return true;
           }
        }

        return false;
        
}


int main()
{
        LinkList list;
        list.Init();
        list.Create(4);
        LinkList list1;
        list1.Init();
        list1.Create(5);
        list.Merge(list1);
        list.Dis();
        list1.Dis();
        list1.Back();
        list1.Dis();
    list1.Sort();
        list1.Dis();
        cout<<list.HaveCircle()<<endl;
        return 0;
}#include <iostream>
using namespace std;

/////////结点///////
struct Node
{
        int data; //数据
        Node* next;//下一个结点
  
};
/////////////单链表/////////
class LinkList
{
public:
         void Init();
         void Create(int n); //创建带n个数据的单链表
         void Dis();  //输出结果
         bool Insert(int i, int data); //在索引为i的位置插入数据为data的结点
         bool Delete(int i); //删除索引为i的结点
         void Destroy(); //销毁链表
         int  GetLen(); //长度
         void Merge(LinkList& list); //归并单链表
         void Back(); //就地反转
         void Sort(); //排序
         bool HaveCircle(); //是否含有环
         Node* GetNode(); //获取头结点
private:
        Node* head; //头结点

};

///////////////////////单链表实现////////////////
void LinkList::Init()
{
        head = new Node();
        head->next = NULL;
}
void LinkList::Create(int n)
{
        Node* p = head;
        for (int i = 1 ; i <= n; ++i)
        {
                Node* temp = new Node();
                temp->data = i ;
                temp->next =NULL;
                p->next = temp;
                p = temp;

        }
        

        
}

void LinkList::Dis()
{  
        Node* p = head->next;
        while(p)
        {
                cout<<p->data<<"\t";
                p = p->next;
        }
        cout<<endl;
}

bool LinkList::Insert(int i, int data)
{
        if (i <0 || i > GetLen())
        {
                return false;
        }
        Node* p = head;
        Node* q = head;
        for (int j = 0; j<i; j++)
        {
            q = p->next;
                p = p->next;

        }
        Node* InsertNode = new Node;
        InsertNode->data = data;
        InsertNode->next = q->next;
        q->next = InsertNode;
        return true;
}

bool LinkList::Delete(int i)
{
        if (i < 0 || i >= GetLen())
        {
      return false;
        }
        Node* p = head;
        Node* q  = head;

        for (int j = 0; j<i; j++)
        {
       q = p->next;
           p = p->next;
           
        }
   Node* DelNode = q->next;
   q->next = DelNode->next;
   delete DelNode;
   return true;

}

void LinkList::Destroy()
{
  Node* p = head->next;
  
  while(p)
  {
          Node* temp = p;
          p = p->next;
          delete temp;
  }
  delete head;
  head->next = NULL;
  
}

int LinkList::GetLen()
{
        int count = 0;
        Node* p = head->next;
        while(p)
        {
                p = p->next;
                ++count;
        }
        return count;
}
void LinkList::Merge(LinkList& list)
{
  
        Node* p = head->next;
        while (p->next)
        {
                p = p->next;
        }
   Node* listNode = list.GetNode();
   p->next = listNode->next;
   
   

}

Node* LinkList::GetNode()
{
        return head;
}

void LinkList::Sort()
{
        //选择排序
    Node* p = head->next;
        while(p)
        {
                Node* small = p;
                Node* q = p->next;
                while(q)
                {
          if (q->data < small->data)
          {
                          small = q;

          }

                  q = q->next;
                }

                if (p != small)
                {
                        int temp;
                        temp = p->data;
                        p->data = small->data;
                        small->data = temp;
                }

                p = p->next;
        }

        
   
}

void LinkList::Back()  
{
        /*先把原来的链表头结点断开
         *建立一个新的链表,然后把原来的链表插入到新链表的头部
         *最后把原来链表头部指向新链表,最后注意要释放新链表的头部
         *也就是最后一个元素**************************************/
        LinkList tempList;
        tempList.Init();
        Node* TempNode = tempList.GetNode();
        Node* n = TempNode;
        Node* p = head->next;
        while(p)   
        {
                Node* q = p->next;
        Node* temp = p;
                temp->next = TempNode;
                temp->data = p->data;
        TempNode = temp;
                p = q;
               
        }
        
   
    head->next = TempNode;
        Delete(GetLen() - 1);
        
        

}

bool LinkList::HaveCircle()
{
        Node* p = head;
        Node* q = head;
        while ((p->next != NULL) && (q->next != NULL) && (q->next->next != NULL) )
        {
       p = p->next;
           q = q->next->next;
           if (p == q)
           {
                   return true;
           }
        }

        return false;
        
}


int main()
{
        LinkList list;
        list.Init();
        list.Create(4);
        LinkList list1;
        list1.Init();
        list1.Create(5);
        list.Merge(list1);
        list.Dis();
        list1.Dis();
        list1.Back();
        list1.Dis();
    list1.Sort();
        list1.Dis();
        cout<<list.HaveCircle()<<endl;
        return 0;
}#include <iostream>
using namespace std;

/////////结点///////
struct Node
{
        int data; //数据
        Node* next;//下一个结点
  
};
/////////////单链表/////////
class LinkList
{
public:
         void Init();
         void Create(int n); //创建带n个数据的单链表
         void Dis();  //输出结果
         bool Insert(int i, int data); //在索引为i的位置插入数据为data的结点
         bool Delete(int i); //删除索引为i的结点
         void Destroy(); //销毁链表
         int  GetLen(); //长度
         void Merge(LinkList& list); //归并单链表
         void Back(); //就地反转
         void Sort(); //排序
         bool HaveCircle(); //是否含有环
         Node* GetNode(); //获取头结点
private:
        Node* head; //头结点

};

///////////////////////单链表实现////////////////
void LinkList::Init()
{
        head = new Node();
        head->next = NULL;
}
void LinkList::Create(int n)
{
        Node* p = head;
        for (int i = 1 ; i <= n; ++i)
        {
                Node* temp = new Node();
                temp->data = i ;
                temp->next =NULL;
                p->next = temp;
                p = temp;

        }
        

        
}

void LinkList::Dis()
{  
        Node* p = head->next;
        while(p)
        {
                cout<<p->data<<"\t";
                p = p->next;
        }
        cout<<endl;
}

bool LinkList::Insert(int i, int data)
{
        if (i <0 || i > GetLen())
        {
                return false;
        }
        Node* p = head;
        Node* q = head;
        for (int j = 0; j<i; j++)
        {
            q = p->next;
                p = p->next;

        }
        Node* InsertNode = new Node;
        InsertNode->data = data;
        InsertNode->next = q->next;
        q->next = InsertNode;
        return true;
}

bool LinkList::Delete(int i)
{
        if (i < 0 || i >= GetLen())
        {
      return false;
        }
        Node* p = head;
        Node* q  = head;

        for (int j = 0; j<i; j++)
        {
       q = p->next;
           p = p->next;
           
        }
   Node* DelNode = q->next;
   q->next = DelNode->next;
   delete DelNode;
   return true;

}

void LinkList::Destroy()
{
  Node* p = head->next;
  
  while(p)
  {
          Node* temp = p;
          p = p->next;
          delete temp;
  }
  delete head;
  head->next = NULL;
  
}

int LinkList::GetLen()
{
        int count = 0;
        Node* p = head->next;
        while(p)
        {
                p = p->next;
                ++count;
        }
        return count;
}
void LinkList::Merge(LinkList& list)
{
  
        Node* p = head->next;
        while (p->next)
        {
                p = p->next;
        }
   Node* listNode = list.GetNode();
   p->next = listNode->next;
   
   

}

Node* LinkList::GetNode()
{
        return head;
}

void LinkList::Sort()
{
        //选择排序
    Node* p = head->next;
        while(p)
        {
                Node* small = p;
                Node* q = p->next;
                while(q)
                {
          if (q->data < small->data)
          {
                          small = q;

          }

                  q = q->next;
                }

                if (p != small)
                {
                        int temp;
                        temp = p->data;
                        p->data = small->data;
                        small->data = temp;
                }

                p = p->next;
        }

        
   
}

void LinkList::Back()  
{
        /*先把原来的链表头结点断开
         *建立一个新的链表,然后把原来的链表插入到新链表的头部
         *最后把原来链表头部指向新链表,最后注意要释放新链表的头部
         *也就是最后一个元素**************************************/
        LinkList tempList;
        tempList.Init();
        Node* TempNode = tempList.GetNode();
        Node* n = TempNode;
        Node* p = head->next;
        while(p)   
        {
                Node* q = p->next;
        Node* temp = p;
                temp->next = TempNode;
                temp->data = p->data;
        TempNode = temp;
                p = q;
               
        }
        
   
    head->next = TempNode;
        Delete(GetLen() - 1);
        
        

}

bool LinkList::HaveCircle()
{
        Node* p = head;
        Node* q = head;
        while ((p->next != NULL) && (q->next != NULL) && (q->next->next != NULL) )
        {
       p = p->next;
           q = q->next->next;
           if (p == q)
           {
                   return true;
           }
        }

        return false;
        
}


int main()
{
        LinkList list;
        list.Init();
        list.Create(4);
        LinkList list1;
        list1.Init();
        list1.Create(5);
        list.Merge(list1);
        list.Dis();
        list1.Dis();
        list1.Back();
        list1.Dis();
    list1.Sort();
        list1.Dis();
        cout<<list.HaveCircle()<<endl;
        return 0;
}
34_avatar_middle
在线会员 发表于 2011-8-1 02:24:11 | 显示全部楼层
uiuiuiiuiuiuiuu
09_avatar_middle
在线会员 发表于 2011-8-1 15:47:11 | 显示全部楼层
曾经在博客转载过,看看这个
93_avatar_middle
在线会员 发表于 2011-8-2 14:43:00 | 显示全部楼层
Windows API一日一练Windows API一日一练Windows API一日一练Windows API一日一练Windows API一日一练
01_avatar_middle
在线会员 发表于 2011-8-2 14:46:40 | 显示全部楼层
回复 Rainsmiling 的帖子

楼主了不起额
23_avatar_middle
在线会员 发表于 2011-8-2 20:47:24 | 显示全部楼层
下下来看看
62_avatar_middle
在线会员 发表于 2011-8-3 16:36:51 | 显示全部楼层
看看 有好处
75_avatar_middle
在线会员 发表于 2011-8-3 17:06:38 | 显示全部楼层
认真学习中
64_avatar_middle
在线会员 发表于 2011-8-3 17:08:33 | 显示全部楼层
什么东西 来看看
57_avatar_middle
在线会员 发表于 2011-8-5 12:10:04 | 显示全部楼层
看看,多谢了。
55_avatar_middle
在线会员 发表于 2011-8-5 12:11:38 | 显示全部楼层
what???
19_avatar_middle
在线会员 发表于 2011-8-5 12:40:00 | 显示全部楼层
楼主总结了?
36_avatar_middle
在线会员 发表于 2011-8-5 12:54:23 | 显示全部楼层
顶一下                           
44_avatar_middle
在线会员 发表于 2011-8-5 13:03:49 | 显示全部楼层
要看看 Windows API一日一练
27_avatar_middle
在线会员 发表于 2011-8-5 13:04:45 | 显示全部楼层
什么东西啊?
29_avatar_middle
在线会员 发表于 2011-8-5 19:37:58 | 显示全部楼层
要看下才能发表意见
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-4-21 05:14

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表