十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言中没有list
创新互联是一家专注于成都网站建设、网站制作与策划设计,博乐网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:博乐等地区。博乐做网站价格咨询:13518219792
list是C++中的一个类
具体使用可以从网上查一下,有很多应用
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;
}
s-data=y;
写反了。
void insert_list(list *head,int i,int y)
{
list *p,*s;int j=0;
p=head;
do
{
p=p-next;
j++;
}while(ji-1);
if(j==i-1)
{
s=(list *)malloc(sizeof(list));
/* 这里写反了 y=s-data; */
s-data=y;
s-next=p-next;
p-next=s;
}
}
C语言没有类的概念。C++有现成的List类, #includelist即可。
如果要自己实现可以参考C++数据结构的书籍,是最基本的练习。
这里实现一个简单的例程,请参考:
#include iostream
#include fstream
#include stdlib.h
#include string.h
using 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;
}