单链表

/*线性表的顺序存储与链接存储的区别:
  1.在顺序存储中,每个存储结点只含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来的。在链接存储中,每个存
  储结点不仅含有所存元素本身的信息,而且含有元素之间逻辑关系的信息。
  2.在数据的顺序存储中,由于每个元素的存储位置都可以通过简单计算得到,所以可以随机地存取数据中的任一元素,对任一元素的存取时间都
  相同,这是一种随机存储机制。
  而在数据的链接存储中,由于每个元素的存储位置是保存在它的前驱结点或后继结点中的,所以只有当访问到其前驱结点或后继结点后才能够按
  指针访问该结点,这是一种顺序存储机制。这样的链接存储表示被称为链接表。
  3.在线性表的顺序存储中,逻辑上相邻的元素,其对应的存储位置也相邻,所以当进行插入或删除运算时,通过需要平均移动半个表的元素,这
  是相当费时的操作。
  在线性表的链接存储中,逻辑上相邻的元素,其对应的存储位置是通过指针来链接的,因而每个结点的存储位置可以任意安排,不必要求相邻,
  所以当进行插入或删除运算,只需修改相关的结点的指针域即可,灵活性较强。由于链接表的每个结点带有指针域,因而在存储空间上比顺序
  存储要付出较大的代价。
*/
#include"iostream"
using namespace std;
struct Lnode{
	int data;
	Lnode *next;
};
void main()
{
	Lnode *p,*q,*p1;
	p1=p=new Lnode;                    //动态产生结点并将其地址赋给P和p1指针
	//p1=new Lnode;
	//p=p1;
	cout<<"请输入三个正整数:";
	for(int i=0;i<3;i++)
	{
		q=new Lnode();                  //q指向一个动态产生的地址
		cin>>q->data;
		p->next=q;                      //将q结点链接到p结点之后
		p=q;                             //将p结点后移,指向后继结点q
	}
	p->next=NULL;                      //将链表的最后一个指针域设置为空
    p=p1->next;                       //将链表的表头指针p1结点的指针域指向p结点
	cout<<"对输入的三个正整数给予输出:";
	while(p!=NULL)
	{
		cout<<p->data<<" ";
		p=p->next;
	}
	cout<<endl;
}

/*
若单链表中的接点来自数组中的结点,则next域指向的的后继结点所在的下标,所心它应被定义为整数类型.如:
struct Lnode{
  int data;
  int next;
};
通常下标为0的元素不作为单链表中的结点使用,而是用它的指针域保存表头指针,这样,数组最多能够提供maxsize-1个结点。另外,当一个结点
去留后继结点时,其指针域应被赋予数值0,表示空指针。
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值