C++数据结构(期末复习)- 第三章 链表

一.单向链表
代码:
1.创建类节点和链表

class IntSLLNode{
public:
    int info;
	IntSLLNode* next;
	IntSLLNode(){
	next = 0;
	}
	IntSLLNode(int el,IntSLLNode* ptr){
			info = el;
			next = ptr;
	}
};
class IntSLList{
private: 
		IntSLLNode * head, *tail;
public:
	IntSLList()
	{
		head=tail=0;
	}
	~IntSLList();
	int isEmpty(){
		return head == 0;
	}
	void addToHead(int el);
	void addToTail(int el);
	...

}
  1. 从链表头插入addToHead()
void IntSLList::addToHead(int el){
	head = new IntSLLNode(el,head);
	if(tail == 0){
		head = tail;
	}
}

3.从链表尾插入addToTail()

void IntSLList::addToTail(int el){
	if(tail !=0){
		tail->next = new IntSLLNode(el,0);
		tail = tail->next;
	}
	else head = tail = new IntSLLNode(el,0);
}

4.deleteFromHead()

int IntSLList::deleteFromHead(){
	if(isEmpty())throw("Empty");
	int el = head->info;
	IntSLLNode *temp = head;
	if(head == tail)//
		head = tail = 0;
	else head = head->next;
	delete temp;
	return el;

}

5.deleteFromTail()

int IntSLList::deleteFromTail(){
	int el = tail->info;
	if (head = tail){
		delete head;
		head = tail = 0;
	}
	else{
		IntSLLNode *tmp;
		for(tmp = head;tmp->next != tail;tmp->next){
			delete tail;
			tail = tmp;
			tail->next = 0;
		}	
		return el;
	}
}

6.deleteNode()

IntSLList::deleteNode(int el){
	if(head != 0)
		if(head==tail&&el == head->info){
			delete head;
			head = tail = 0;
		}
		else if(el = head->info){
			IntSLLNode *tmp ,*pred;
			for(pred = head,tmp=head->next;tmp!=0&&!(tmp->info == el);pred->next,tmp->next);
			if(tmp != 0){
				pred->next = tmp->next;
				if(tmp = tail)
					tail = pred;
				delete tmp;
			}
		}
}

在这里插入图片描述
二、双向链表
1.在末尾添加一个节点
(1)创建一个新节点,初始化三个数据成员
(2)将el值赋给info
(3)将next成员置为null
(4)将prev成员赋给tail
(5)令tail指向新节点
(6)令前驱节点的next成员指向新节点
在这里插入图片描述
2.从末尾删除节点
(1)tail = pre
(2) delete
(3) 新尾结点的next = null
在这里插入图片描述
三、循环链表

四、跳跃链表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyzy_czh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值