前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构:带头结点单链表实现--一种非常好的写法(考研)

数据结构:带头结点单链表实现--一种非常好的写法(考研)

作者头像
lexingsen
发布2022-02-24 19:09:25
1570
发布2022-02-24 19:09:25
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客
代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;


struct node {
	int val;
	node *next;
	
	node(int x, node *next) {
		this->val = x;
		this->next = next; 
	}
}; 

node *head;
int size = 0;

int getSize() {return size;}


bool isEmpty() {return size == 0;}

//[0,size] 
void insert(int index, int x) {
	if (index<0 || index>size) {
		cout << "the index is invalid!" << endl;
		return;
	}
	
	node *p = head;
	for (int i=0; i<index; ++i) p = p->next;
	node *q = new node(x, p->next);
	p->next = q;
	size ++;
	
}
void insertTail(int x) {
	insert(size, x);
}
void insertHead(int x) {
	insert(0, x);
}
//[0,size-1]
void del(int index) {
	if (index<0 || index>=size) {
		cout << "the index is invalid" << endl;
		return; 
	}
	
	if (isEmpty()) {
		cout << "the LinkedList is null!" << endl;
		return;
	}
	
	node *p = head;
	for (int i=0; i<index; ++i) p = p->next;
	node *del = p->next;
	p->next = del->next;
	delete del;
	size --;
}
void delFirst() {del(0);}
void delLast() {del(size-1);}

//[0,size-1]
int get(int index) {
	if (index<0 || index>=size) {
		cout << "the index is invalid!" << endl;
		return -1; 
	}
	
	if (isEmpty()) {
		cout << "the LinkedList is null!" << endl;
		return -1;
	}
	node *p = head->next;
	for (int i=0; i<index; ++i) p = p->next;
	return p->val;
}
int getLast() {return get(size-1);}
int getFirst() {return get(0);}

void show() {
	node *p = head->next;
	while (p) {
		cout << p->val << " ";
		p = p->next;
	}
	cout << endl;
}

int main() {
	head = new node(0, NULL);
	int a[] = {1,2,3,4,5};
	int n = sizeof(a)/sizeof(int);
	for (int i=0; i<n; ++i) insertTail(a[i]);
	show();
	delFirst();
	show();
	delLast();
	show();
	
	
	cout << get(2) << endl;
	cout << getFirst() << endl;
	cout << getLast() << endl;
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档