链表实现1

#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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值