博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表
阅读量:6279 次
发布时间:2019-06-22

本文共 1549 字,大约阅读时间需要 5 分钟。

线性表是数据结构中比較重要的一种结构。线性表能够用连续存储空间来表示,也能够用链表的形式表示。链式存储结构不要求在逻辑上相邻的元素在物理位置上也相邻,因此他在插入元素和删除元素上具有着得天独厚的优势,可是却失去了顺序存储中可随机存储的长处。

线性链表中每一个元素被存放在一个叫做结点的地方,结点包括一个数据域和一个指针域,数据域存放元素,指针域存放着指向下一个结点的指针。若链表的结点中仅仅包括一个指针域,那么这个链表被称为线性链表或者单链表。有时我们会在第一个结点前加上一个结点,这个结点的数据域能够不存放内容,也能够存放数据元素的个数,指针域指向第一个结点,当头结点的指针域为空时,那么这个链表就为一个空链表。

以下是实现单链表的代码:

首先定义一个结点结构体:包括一个数据域和一个指针域

typedef struct LNode{	int data;	LNode *next;}LNode,*LinkList;
以下来创建一个链表:输入为元素的个数,此链表具有头结点

void createList(LinkList &L,int n) //这里一定要加引用传递{	L=new LNode;	L->next=NULL;	LinkList p=NULL;	for(int i=n;i>0;i--)	{		p=new LNode;		cin>>p->data;		p->next=L->next;		L->next=p;	}}
第一个參数要加引用传递,原因以下会讲到;

以下是关于在某个位置往链表中插入一个元素的代码:

bool listInsert(LinkList L,int i,int e){	LinkList p=L;int j=0;	while(p && j
next; j++; } if(!p||j>i-1) return false; LinkList s=new LNode; s->data=e; s->next=p->next; p->next=s; return true;}
接下来是获得链表中某个位置上元素的数据的代码:

bool getElem(LinkList L,int i,int &e){	LinkList p=NULL;	p=L->next;	int j=0;	while(j
next; j++; } if(!p||j>i) return false; e=p->data; return true;}
最后写了測试代码的程序:

void main(){	LNode *p=NULL;	createList(p,5);	int x=0;	cout<<"before inserting: ";	showList(p);	listInsert(p,1,20);	cout<<"after inserting: ";	showList(p);	cout<<"get a value: ";	getElem(p,2,x);	cout<
<
当中showlist()为打印链表元素的函数:

void showList(LinkList L){	LinkList p=L->next;	while(p)	{			cout<
data<<" "; p=p->next; } cout<
上面说到为什么要加引用传递參数呢?那是由于我们传递的是指针,而指针的地址是在调用函数中申请的,等于给指针赋值了,调用函数结束后,这个地址就销毁了。可是可能有人问那为什么我们传址的函数能够使用指针呢?那是由于我们在调用前这种指针的地址已经存在了。

你可能感兴趣的文章
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《第一桶金怎么赚——淘宝开店创业致富一册通》一一第1章 创业梦想,怎样起步...
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>