如何用C语言或C++实现一个List类?如何用C语言或C++实现一个List类?
C语言没有类的概念 。C++有现成的List类,#includelist即可 。
如果要自己实现可以参考C++数据结构的书籍,是最基本的练习 。
这里实现一个简单的例程,请参考:
#include iostream#include fstream#include stdlib.h#include string.husing namespace std;#includestdio.h#includestring#include "math.h"templateclass T class List{public:List()构造函数{pFirst = NULL;}void Add(T t)在Link表头添加新结点{if(pFirst == NULL){pFirst = new Node;*(pFirst-pT) = t;}else{Node* pNewNode = new Node;*(pNewNode-pT) = t;pNewNode-pNext = pFirst;pFirst = pNewNode;}}void Remove(T t) 在Link中删除含有特定值的元素{Node* pNode = pFirst;if(*(pNode-pT) == t){pFirst = pFirst-pNext;delete pNode;return;}while(pNode != NULL){Node* pNextNode = pNode-pNext;if(pNextNode!=NULL){if(*(pNextNode-pT) == t){pNode-pNext = pNextNode-pNext;delete pNextNode;return;}}elsereturn;没有相同的pNode = pNode-pNext;}}T* Find(T t)查找含有特定值的结点{Node* pNode = pFirst;while(pNode != NULL){if(*(pNode-pT) == t){return pNode-pT;}pNode = pNode-pNext;}return NULL;}void PrintList()打印输出整个链表{if(pFirst == NULL){cout"列表为空列表!"endl;return;}Node* pNode = pFirst;while(pNode != NULL){cout*(pNode-pT)endl;pNode = pNode-pNext;}}~List(){Node* pNode = pFirst;while(pNode != NULL){Node* pNextNode = pNode-pNext;delete pNode;pNode = pNextNode;}}protected:struct Node{Node* pNext;T* pT;Node(){pNext = NULL;pT = new T;}~Node(){delete pT;}};Node *pFirst;链首结点指针};class Student{public:char id[20];学号char name[20];姓名int age;年龄Student(){}~Student(){}Student(const char* pid, const char* pname, int _age){strcpy(id, pid);strcpy(name, pname);age = _age;}bool operator==(const Student stu){return strcmp(id, stu.id) == 0strcmp(id, stu.id) == 0age==stu.age;}Student operator=(const Student stu){strcpy(id, stu.id);strcpy(name, stu.name);age = stu.age;}friend ostream operator (ostream out,const Student stu);};ostreamoperator (ostream out,const Student stu){out"id:"stu.id"\tname:"stu.name"\tage:"stu.ageendl;}int main(){ListStudent stuList;cout"添加学生前:"endl;stuList.PrintList();Student stu1("1", "张三", 18);Student stu2("2", "李四", 18);Student stu3("3", "王五", 18);Student stu4("4", "至尊宝", 18);Student stu5("5", "猪八戒", 18);Student stu6("6", "唐僧", 18);Student stu7("7", "沙和尚", 18);Student stu8("8", "观音", 18);stuList.Add(stu1);stuList.Add(stu2);stuList.Add(stu3);stuList.Add(stu4);stuList.Add(stu5);stuList.Add(stu6);stuList.Add(stu7);stuList.Add(stu8);cout"添加学生后:"endl;stuList.PrintList();Student stu11("1", "张三", 18);Student* pStu = stuList.Find(stu11);cout"查找到的同学是:"*pStu;stuList.Remove(stu11);cout"\n\n删除第一个后:"endl;stuList.PrintList();return 0;}
如何用C语言实现一个类似C++中vector的功能
你先学习template,看看Vector是怎么造的,懂得了原理,vector简单的,说穿了就是数组,数组是有大小的 , 当你要扩大到一定的时候 , 就会重新分配一个较大的数组,把先前的复制到新的数组中,这个是vector的致命缺陷~当要插入的量大的时候,但优点是访问速度快 。
个人博客::blog.csdn./what951006?viewmode=list
C语言如何用if实现一个循环
label if(conditiong)
{
expresstion;
goto label;
}
如何用C语言实现一个类似C++中vectorstring的功能
对于不可以operator overload的c语言来说,string就算实现也是半吊子工程 。至于vector,c没有template,所以也不可以 。
请教各位大侠如何用C语言或者是C++实现一个对话框
自己实现是不太现实的
需要你自己来处理图形界面 工作量太大 。
最简单的 就是用MFC 里面有现成的对话框函数 直接调用就好
也可以用minigui 或者QT一类的图形插件 。
推荐阅读
- 射击游戏飞行手游,飞行射击游戏app
- 手机怎么改安卓版本无root,安卓免root一键修改手机机型
- 华为牌的路由器怎么装,买个华为路由器怎么装
- 嫦娥五号着陆直播视频回放,嫦娥五号着陆直播 央视
- vb.net手输计算器 vbs写计算器
- 路由器有网怎么接电视,路由器连接电视的网线
- 关于如何做电商合肥瑞禹电商的信息
- 模拟结婚游戏大全,模拟婚礼安卓版
- java源代码如何执行 java源代码的编译和运行指令是