单链表的实现

#include<iostream>
using namespace std;
typedef int ElemType;
typedef struct LNode
{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

bool InitList(LinkList &L)// 单链表的初始化
{
	L = new LNode;
	L->next = NULL;
	return true;
}

bool GetElem(LinkList L,int i,ElemType &e)// 单链表的取值
{
	LinkList p;
	p = L->next;
	int j = 1;
	while(p && j < i)
	{
		p = p->next;
		j++;
	}
	if(!p||j>i)return false;
	e = p->data;
	return true;
}

LNode *LocateElem(LinkList L,ElemType e)// 单链表的查找
{
	LinkList p;
	p = L->next;
	while(p && p->data !=e)
	{
		p = p->next;	
	}
	return p;
}

bool ListInsert(LinkList &L,int i,ElemType e)// 单链表的插入
{
	LinkList p;
	p = L;
	int j = 0;
	while(p && (j < i-1))
	{
		p = p->next;
		j++;
	}
	if(!p || j > i - 1)
		return false;
	LinkList s = new LNode;
	s->data = e;
	s ->next = p ->next;
	p ->next = s;
	return true;
}

bool ListDelete(LinkList &L,int i)// 单链表的删除
{
	LinkList p = L,q;
	int j = 0;
	while(p->next &&  j < i - 1)
	{
		p = p ->next;
		j++;
	}
	if(!p->next || j > i - 1)return false;
	q = p->next;
	p->next = q->next;
	delete q;
	return true;
}

void CreateList_H(LinkList &L,int n)// 单链表的前插法
{
	L = new LNode;
	L->next = NULL;
	
	for(int i=0;i < n;i++)
	{
		LinkList p = new LNode;
		cin >> p->data;
		p->next = L ->next;
		L->next = p;
	}
}

void CreateList_R(LinkList &L,int n)// 单链表的后插法
{
	L = new LNode;
	L->next = NULL;
	LinkList r = L,p;
	for(int i=0;i<n;i++)
	{
		p = new LNode;
		cin >> p->data;
		p ->next = NULL;
		r->next = p;
		r = p;
	}
	

}

int main()
{

}

posted @ 2020-11-17 20:19  Steamery  阅读(67)  评论(0)    收藏  举报