单链表的创建(以int数据为例)学习笔记

博客介绍了简单的创建单链表的方法,以int数据类型为例,可替换为其他类型或自定义结构体。采用尾插入法,为方便输出加入first指针。还提及头插入法简单但顺序输出有问题,后续待证明逆序输出情况。

这个是一个简单的创建单链表的方法,以int数据类型为例。

no:用于存储int类的数据,int可以换成其他的类型或者自己定义的结构体,都是可以的,主要作用也就是储存数据罢了。

代码中使用的是尾插入,就是将输入的数插入到链表末尾,听上去是按顺序输入,但是作为中介的head此时位于链表末尾,直接输出不太方便。所以在linklist中多加入了first指针,指向链表的第一个输入的数,输出时从first所指数据依次输出即可,下面也会演示。

另外有一种头输入方式头插入简单易懂,基本上看一眼就知道,但是存在一个问题,即使使用了first指针也没办法顺序输出。是否为逆序输出还没证明,等到证明了再写进来。

#inclued <iostream>
using namespace std;
class node{//定义节点类,用结构体写也可以
	public:
		int no;
		node* next;//定义指针指向下一个node节点
};

class linklist{
	public:
		linklist(int n);//创建n长度的链表(尾插入)
		~linklist();//析构函数,在程序结束时自动执行
		void display();//输出链表,用于检测
	private:
		node* head;//头指针
		node* first;//指向链表的第一个节点,方便输出
};

linklist::linklist(int n){//尾插入
 	head=new node;
 	cin>>head->no;
 	first=head;//建立指向首个输入数据的地址
 	head->next=NULL;
 	for(int i=0;i<n-1;i++){
  		node* s=new node;
  		cin>>s->no;
  		head->next=s;
  		head=s;
 	}
}

linklist::~linklist(){
	node*p=first;
	while(p!=NULL){
		node*q=p;
		p=p->next;
		delete q;
	}
}

void linklist::display(){
	node* p=first;
	while(p->next!=NULL){
		p=p->next;
    		cout<<p->no<<endl;
   	}
}

int main(){
	linklist link(5);
	linklist.display();
	return 0
}

以下是未写在上面的头插入

linklist::linklist1(int n){
	 head=new node;
	 head->next=NULL;
	 for(int i=0;i<n;i++){
 	 	node* s=new node;
 	 	cin>>s->no;
 		 if(i==0) first->next=s;
 	 	s->next=head->next;
 	 	head->next=s;
 	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值