c语言库函数有list吗 c语言所有库函数

如何用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; } } else return;没有相同的 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) == 0 strcmp(id, stu.id) == 0 age==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);};ostream operator (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一类的图形插件。

如何用C++实现堆排序?不要C语言!

:baike.baidu./view/157305.htm这个网站里面有 你可以看一下

如何用c语言自己实现一个互斥体或临界区

互斥体实现了“互相排斥”(mutual exclusion)同步的简单形式(所以名为互斥体(mutex))。互斥体禁止多个线程同时进入受保护的代码“临界区”(critical section)。 每个进程中访问临界资源的那段代码称为临界区(Critical Section)

如何用c++实现一个lru cache

其实关键不在于用C++还是什么,关于在于算法

一般可以使用一个map和一个双向链表来实现lru

C语言如何用vb界面实现

C做界面用VC++

matlab中imagesc如何用C语言去实现

1.准备好C语言程序,清楚C语言的入口函数

2.编写mexfunction函数。mexfunction函数为C语言与MATLAB语言的接口函数。调用实例在mylinedetect.c文件中.在MATLAB中调用mex指令编译相关文件,将C语言编译为MEX文件。

3.编译完成后,生成mylinedetect.mexw32或mylinedetect.mexw64文件,此文件即mex文件,用于MATLAB与C语言接口函数.

4.编译完成之后,编写MATLAB函数,调用MEX文件。以MEX文件的形式调用编译完成的C语言函数[o1,o2]=mylinedetect(double(X).');......

5.输出结果,上述linedetect函数完成图像中直线检测功能,带入MATLAB中调用后形成结果。

C语言中函数的类型有哪些呢?

对于C语言中的函数类型,一般可以分为以下两类:

1. 库函数(Library Function):也称为内置函数(Built-in Function),是由C语言提供的、已经封装好的函数。库函数通常具有标准化、通用化的特点,包括数学运算、字符串处理、文件操作等方面。例如`printf()`和`scanf()`是C语言中常用的库函数。

2. 用户自定义函数(User-Defined Function):也称为外置函数(External Function),是程序员根据需求自行编写的函数。用户自定义函数可以将某一段需要重复使用的代码封装成一个函数,在其他地方调用该函数即可实现相同的功能,起到了复用代码的作用。在需要多次执行特定任务时,使用自定义函数可以使程序结构更加清晰、易于理解。

C语言中creatlist的用法

1、createlist不是库函数,一般是数据结构中实现新建一个链表的自定义函数。因此没有什么用法好说的,关键是看自己怎么定义。

2、例程:

NODE *creatlist(int a[])

{ NODE *h,*p,*q;int i;

h=(NODE *)malloc(sizeof(NODE));

h-next=NULL;

for(i=0;iN;i++)

{q=(NODE *)malloc(sizeof(NODE));

q-data=a[i];

q-next=NULL;

if(h-next==NULL) h-next=p=q;

else {p-next=q;p=q;}     }

return h;

}

c++类库中list的函数有哪些?

C++ Lists(链表)

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

assign() 给list赋值

back() 返回最后一个元素

begin() 返回指向第一个元素的迭代器

clear() 删除所有元素

empty() 如果list是空的则返回true

end() 返回末尾的迭代器

erase() 删除一个元素

front() 返回第一个元素

get_allocator() 返回list的配置器

insert() 插入一个元素到list中

max_size() 返回list能容纳的最大元素数量

merge() 合并两个list

pop_back() 删除最后一个元素

pop_front() 删除第一个元素

push_back() 在list的末尾添加一个元素

push_front() 在list的头部添加一个元素

rbegin() 返回指向第一个元素的逆向迭代器

remove() 从list删除元素

remove_if() 按指定条件删除元素

rend() 指向list末尾的逆向迭代器

resize() 改变list的大小

reverse() 把list的元素倒转

size() 返回list中的元素个数

sort() 给list排序

splice() 合并两个list

swap() 交换两个list

unique() 删除list中重复的元素附List用法实例:#include iostream

#include list

#include numeric

#include algorithmusing namespace std;//创建一个list容器的实例LISTINT

typedef listint LISTINT;//创建一个list容器的实例LISTCHAR

typedef listchar LISTCHAR;void main(void)

{

//--------------------------

//用list容器处理整型数据

//--------------------------

//用LISTINT创建一个名为listOne的list对象

LISTINT listOne;

//声明i为迭代器

LISTINT::iterator i; //从前面向listOne容器中添加数据

listOne.push_front (2);

listOne.push_front (1); //从后面向listOne容器中添加数据

listOne.push_back (3);

listOne.push_back (4); //从前向后显示listOne中的数据

cout"listOne.begin()--- listOne.end():"endl;

for (i = listOne.begin(); i != listOne.end(); ++i)

cout *i " ";

cout endl; //从后向后显示listOne中的数据

LISTINT::reverse_iterator ir;

cout"listOne.rbegin()---listOne.rend():"endl;

for (ir =listOne.rbegin(); ir!=listOne.rend();ir++) {

cout *ir " ";

}

cout endl; //使用STL的accumulate(累加)算法

int result = accumulate(listOne.begin(), listOne.end(),0);

cout"Sum="resultendl;

cout"------------------"endl; //--------------------------

//用list容器处理字符型数据

//-------------------------- //用LISTCHAR创建一个名为listOne的list对象

LISTCHAR listTwo;

//声明i为迭代器

LISTCHAR::iterator j; //从前面向listTwo容器中添加数据

listTwo.push_front ('A');

listTwo.push_front ('B'); //从后面向listTwo容器中添加数据

listTwo.push_back ('x');

listTwo.push_back ('y'); //从前向后显示listTwo中的数据

cout"listTwo.begin()---listTwo.end():"endl;

for (j = listTwo.begin(); j != listTwo.end(); ++j)

cout char(*j) " ";

cout endl; //使用STL的max_element算法求listTwo中的最大元素并显示

j=max_element(listTwo.begin(),listTwo.end());

cout "The maximum element in listTwo is: "char(*j)endl;

}#include iostream

#include listusing namespace std;

typedef listint INTLIST;//从前向后显示list队列的全部元素

void put_list(INTLIST list, char *name)

{

INTLIST::iterator plist; cout "The contents of " name " : ";

for(plist = list.begin(); plist != list.end(); plist++)

cout *plist " ";

coutendl;

}//测试list容器的功能

void main(void)

{

//list1对象初始为空

INTLIST list1;

//list2对象最初有10个值为6的元素

INTLIST list2(10,6);

//list3对象最初有3个值为6的元素

INTLIST list3(list2.begin(),--list2.end()); //声明一个名为i的双向迭代器

INTLIST::iterator i; //从前向后显示各list对象的元素

put_list(list1,"list1");

put_list(list2,"list2");

put_list(list3,"list3");

//从list1序列后面添加两个元素

list1.push_back(2);

list1.push_back(4);

cout"list1.push_back(2) and list1.push_back(4):"endl;

put_list(list1,"list1");//从list1序列前面添加两个元素

list1.push_front(5);

list1.push_front(7);

cout"list1.push_front(5) and list1.push_front(7):"endl;

put_list(list1,"list1");//在list1序列中间插入数据

list1.insert(++list1.begin(),3,9);

cout"list1.insert(list1.begin()+1,3,9):"endl;

put_list(list1,"list1");//测试引用类函数

cout"list1.front()="list1.front()endl;

cout"list1.back()="list1.back()endl;//从list1序列的前后各移去一个元素

list1.pop_front();

list1.pop_back();

cout"list1.pop_front() and list1.pop_back():"endl;

put_list(list1,"list1");//清除list1中的第2个元素

list1.erase(++list1.begin());

cout"list1.erase(++list1.begin()):"endl;

put_list(list1,"list1");//对list2赋值并显示

list2.assign(8,1);

cout"list2.assign(8,1):"endl;

put_list(list2,"list2");//显示序列的状态信息

cout"list1.max_size(): "list1.max_size()endl;

cout"list1.size(): "list1.size()endl;

cout"list1.empty(): "list1.empty()endl;//list序列容器的运算

put_list(list1,"list1");

put_list(list3,"list3");

cout"list1list3: "(list1list3)endl;

cout"list1list3: "(list1list3)endl;//对list1容器排序

list1.sort();

put_list(list1,"list1");

//结合处理

list1.splice(++list1.begin(), list3);

put_list(list1,"list1");

put_list(list3,"list3");

}补充:STL标准函数find进行vector 、list链表查找#include vector

#include algorithm

#include iostreamclass example

{

public:

example(int val)

{

i = val;

}bool operator==(example const rhs)

{

return (i == rhs.i) ? true : false;

}private:

int i;

};

using namespace std;

int main(void)

{

vectorexample ve;

ve.push_back(1);

vectorexample::iterator it;

example elem(1);

it = find(ve.begin(), ve.end(), elem);

coutboolalpha(*it == elem);

}


网站名称:c语言库函数有list吗 c语言所有库函数
转载源于:http://scyanting.com/article/ddsiopp.html