`
- 浏览:
11780745 次
- 性别:
- 来自:
深圳
-
//带头结点的单链表,学习之用
#include<iostream>
#include<string>
usingnamespacestd;
structNode
...{
stringname;
intage;
Node*next;
};
typedefNode*LinkList;
LinkListinitList()//建立头结点
...{
LinkListh=newNode;
h->next=NULL;
returnh;
}
LinkListcreateListQueue(intn)//建立队列链表
...{
LinkListh,q,p;
h=initList();
q=h;
for(inti=0;i<n;i++)
...{
p=newNode;
cin>>p->name>>p->age;
q->next=p;
q=p;
}
q->next=NULL;
returnh;
}
voidprtList(LinkListh)//输出链表
...{
LinkListp;
p=h->next;
while(p!=NULL)
...{
cout<<p->name<<""<<p->age<<endl;
p=p->next;
}
}
LinkListcreateListStack(intn)//建立栈链表
...{
LinkListh,p,q;
h=initList();
q=h->next;
for(inti=0;i<n;i++)
...{
p=newNode;
cin>>p->name>>p->age;
h->next=p;
p->next=q;
q=p;
}
returnh;
}
boolemptyList(LinkListh)//判断链表空
...{
returnh==h->next;
}
LinkListsearchIndex(LinkListh,inti)//查找第i个结点
...{
intk=1;
LinkListp;
p=h->next;
while(k!=i&&p!=NULL)
...{
p=p->next;
k++;
}
if(k==i)
returnp;
else
returnNULL;
}
voidinsertList(LinkListh,Nodet,inti)//在第i个位置插入结点t
...{
LinkListp,q,s;
if(i==1||emptyList(h)==true)
...{
p=h;
}
else
...{
p=searchIndex(h,i-1);
if(p==NULL)return;
}
s=newNode;
*s=t;
q=p->next;
s->next=q;
p->next=s;
}
voiddeleteList(LinkListh,intn,inti)//删除第i个结点,n为结点总数
...{
LinkListp,q;
if(i<1||i>n||emptyList(h)==true)return;
if(i==1)
...{
p=h;
}
else
...{
p=searchIndex(h,i-1);
}
q=p->next;
p->next=q->next;
if(q!=NULL)deleteq;
}
voidreverseList(LinkListh)//逆置链表
...{
if(emptyList(h)==true)return;
LinkListp=h->next,q=p->next;
p->next=NULL;
while(q!=NULL)
...{
p=q->next;
q->next=h->next;
h->next=q;
q=p;
}
}
voidrun()
...{
intn;
cin>>n;
//假冒的链表逆置
LinkListh=createListStack(n);
prtList(h);
//真的链表逆置
/**//*LinkListh=createListQueue(n);
reverseList(h);
prtList(h);
*/
//链表的第k个位置插入一个结点
/**//*LinkListh=createListQueue(n);
prtList(h);
cout<<endl;
Nodet;
cin>>t.name>>t.age;
intk;
cin>>k;
insertList(h,t,k);
prtList(h);
*/
//链表中删除第k个结点
/**//*LinkListh=createListQueue(n);
prtList(h);
cout<<endl;
intk;
cin>>k;
deleteList(h,n,k);
prtList(h);*/
}
intmain()
...{
inttotal;
cin>>total;
for(intnow=1;now<=total;now++)run();
return0;
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
这是一个双链表的入门简单例子源码,很适合初学者学习。
双向链表使用说明.txt
c++链表
使用 python3 实现一个链表 使用 python3 实现一个链表 使用 python3 实现一个链表 使用 python3 实现一个链表 使用 python3 实现一个链表 使用 python3 实现一个链表 使用 python3 实现一个链表 使用 python3 实现...
c语言_链表实例讲解(两个经典例子) 建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁。
数据结构学习辅助,链表使用例程,注释非常清楚,而且可以实际运行,方便初学者调试、体会
将linux内核源码中list.h拿出来, 增删与遍历部分写了详细注释, 关于链表合并, 没用过所以没写. 源码版本是2.6.32, 不过链表的源码改动应该不是很大. 我的邮箱2253238252@qq.com, 代码有什么不对的欢迎发邮件给我
支持替代malloc, 从heap中分配系列内存池:8-8K,每个内存池的个数可以调整 也支持单独创建与使用一个额外的大小指定的内存池 从kernel中移植链表,及实际使用
废话不多说,直接上CPP代码,算法的重要性不用多说。
C语言链表的应用,包括建立链表、删除链表、插入/删除元素操作
该实例摘自范磊老师编写的《c++全方位学习》,该实例简明扼要,概括了链表的所有操作:插入节点、删除节点、及节点号排序、节点搜索等,特别适合于学习链表知识
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:...
封装了链表的操作,功能有链表的创建,节点的添加(附加),插入(前插、后插和插入到链表头部),删除,得到节点数据,得到节点位置,得到节点总数,释放链表。 使用了类模版,使得可以让节点中的数据为任意类型,...
C实现一个链表类【代码】,作者 tr0217 (尧思齐 齐尧),是一个通用的C链接表,可以在TC2.0、vc6.0和gcc5.4.3中编译成功,释放链表所占用的资源,在链表使用结束后必须调用,本链表为单向链表,非常有效。...
学习建立链表,使用链表存储结构信息,增加链表结点及删除链表结点等基本操作。并可以增加数据信息及检索等功能。
主要为大家详细介绍了C++ STL入门教程第二篇,list双向链表使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用数据结构编写的将两个单链表合并为一个新的链表。该新链表使用原链表的空间
数组和链表的使用场景 数组和链表.pdf
主要介绍了zf框架的Db类select查询器join链表使用示例,需要的朋友可以参考下
主要介绍了JS基于对象的链表实现与使用方法,结合实例形式分析了链表的原理及javascript定义与使用链表的相关操作技巧,需要的朋友可以参考下