链表实现1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35119182/article/details/88342603
#include <iostream>
#include <string>

using namespace std;

// 链表的结构
typedef struct LNode{
	int data;			 // 数据域
	struct LNode * next; // next指针
}LNode,*LinkNode;
 

//构造一个空的单链表L
bool LinkNode_L(LinkNode &L) {

	L = new LNode; // 创建头结点
	if (!L) {
		return false;
	}
	L->next = NULL;
	L->data = 0; 
	return false;
} 

//前插法创建单链表
void CreateList_H(LinkNode &L) {
	
	//输入n个元素的值,建立到头结点的单链表L
	int n;
	LinkNode s; //定义一个指针变量
	L = new LNode;
	L->next = NULL; //先建立一个带头结点的空链表
	cout << "请输入元素个数n:" << endl;
	cin >> n;
	cout << "请依次输入n个元素:" << endl;
	cout << "前插法创建单链表..." << endl;
	while (n>0) {
		
		s = new LNode;
		cin >> s->data;
		s->next = L->next;
		n--;
	}

} 
 
//尾插法创建单链表 
void createtail_list(LinkNode & L) {
	//输入n个元素的值,建立到头结点的单链表L
	int n;
	LinkNode s,r; //定义一个指针变量s 和一个尾指针
	L = new LNode;
	L->next = NULL; //先建立一个带头结点的空链表
	r = L; // 尾指针首先指向头指针
	cout << "请输入元素个数n:" << endl;
	cin >> n;
	cout << "请依次输入n个元素:" << endl;
	cout << "前插法创建单链表..." << endl;

	while (n--) {
		s = new LNode;
		cin >> s->data;
		if (L->next) {
			s->next = L->next;
		}		
		s->next = NULL;
		r->next = s;
		r = s;	// 这一步相当于 r指针变量指向一个地址 
	}   
}

//单链表的取值


//按值查找

//单链表的插入
bool ListInsert_L(LinkNode & L,int i,int e=0) {

	int j;
	LinkNode p, s;
	p = L;
	j = 0;
	// 查找 i 个节点位置
	while (p&&j<i-1) { 
		p = p->next;
		j++;
	}
	s = new LNode;
	s->next = p->next;
	p->next = s;
	return true; 
}
//单链表的删除
bool ListDelete_L(LinkNode &L,int i) {

	int j;
	LinkNode p, s;
	p = L;
	j = 0;
	while (j<i-1) {
		p = p->next;
		j++;
	} 
	s = p->next;
	p->next = s->next;
	delete s;
	return true;
}

//单链表的输出
void ListPrint(LinkNode L) {

	LinkNode p;
	p = L->next;
	while (p) {
		cout << p->data << endl;
		p = p->next;
	}
}

int main() { 
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_35119182/article/details/88342603
今日推荐