数据结构单链表-创新互联

单链表

单链表的操作项与顺序链表的操作箱一致。
区别内容有:
1.单链表的插入与删除
2、单链表的尾插法和头插法

成都创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目做网站、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元克州做网站,已为上家服务,为克州各地企业和个人服务,联系电话:18982081108代码
#include#define error 0
#define ok 1
using namespace std;
typedef int ElemType;
typedef struct Node
{
	ElemType data;
	struct Node* next;
}Lnode,*LinkList;//区别:若定义LinkList L,表示L为单链表的头指针,若定义Lnode *p,则p表示指向单链表中某个节点的指针。
void InitList_L(LinkList &L)//单链表的初始化
{
	L = new Lnode;
	if (!L)
	{
		exit(1);
	}
	L->next = NULL;//为头结点的版本,没有头结点时L=NULL;
}
int ListLength_L(LinkList L)//获取单链表的长度
{
	LinkList p;
	int length = 0;
	p = L->next;
	while (p)
	{
		length++;
		p = p->next;
	}
	return length;
}
int LocateElem_L(LinkList L, ElemType &e)//Lnode *LocateElem_L(LinkList L, ElemType &e)查找某个元素在单链表中的位置
{
	LinkList p;
	int i = 0;
	p = L->next;
	while (p && p->data != e)
	{
		p = p->next;
		i++;
	}
	return i;
}
bool ListInsert_L(LinkList& L, int i, ElemType e)//单链表插入元素
{
	LinkList p, s;
	s = new Lnode;
	p = L;
	int j = 0;
	while (p && (j< i - 1))
	{
		p = p->next;
		j++;
	}
	if (!p&&j!=i - 1)
	{
		return false;
	}
	s->data = e;
	s->next = p->next;
	p->next = s;
}
bool ListDelete_L(LinkList& L, int i, ElemType& e)//单链表的删除
{
	LinkList p, q;
	int j = 0;
	p = L;
	while ((p->next) && (j< i - 1))//区别于插入操作,是因为插入时有n+1个位置,删除时只有n个元素
	{
		p = p->next;
		j++;
	}
	if (j !=i-1)
	{
		return false;
	}
	q = p->next;
	p->next = q->next;
	e = q->data;
	return true;
}
bool GetElem_L(LinkList& L, int i, ElemType& e)//获取单链表中某个位置的值
{
	LinkList p;
	p = L;
	int j = 0;
	while ((p->next) && (j< i))
	{
		j++;
		p = p->next;
	}
	if (j != i-1)
	{
		return false;
	}
	e = p->data;
	return true;
}
void CreateList_L_Rear(LinkList& L, ElemType a[], int n)//创建单链表尾插法
{
	LinkList p, q;
	L = new Lnode;
	q = L;
	for (int i = 0; i< n; i++)
	{
		p = new Lnode;
		p->data = a[i];
		q->next = p;
		q = p;
	}
	q->next = NULL;
}
void CreateList_L_Front(LinkList& L, ElemType a[], int n)//创建单链表头插法
{
	LinkList p;
	L = new Lnode;
	L->next = NULL;
	for (int i = 0; i< n; i++)
	{
		p = new Lnode;
		p->data = a[i];
		p->next = L->next;
		L->next = p;
	}
}
void DestroyList_L(LinkList& L)
{
	LinkList p, p1;
	p = L;
	while (p)
	{
		p1 = p;
		p = p->next;
		delete p1;
	}
	L = NULL;
}
void Print_L(LinkList& L)
{
	LinkList p;
	p = L->next;
	while (p)
	{
		cout<< p->data<< " ";
		p = p->next;
	}
	cout<< endl;
}
void MergeList_L(LinkList& La, LinkList& Lb, LinkList& Lc)
{
	LinkList pa, pb, pc;
	pa = La->next;
	pb = Lb->next;
	Lc = La;
	pc = Lc;
	while (pa && pb)
	{
		if (pa->data< pb->data)
		{
			pc->next = pa;
			pc = pa;
			pa = pa->next;
		}
		else
		{
			pc->next = pb;
			pc = pb;
			pb = pb->next;
		}
		pc->next = pa ? pa : pb;
	}
}
int main()
{
	LinkList list_a,list_b,list_c;
	int a[10];
	for (int i = 0; i< 10; i++)
	{
		a[i] = i;
	}
	CreateList_L_Front(list_a, a, 10);
	cout<< "采用头插法"<< endl;
	Print_L(list_a);
	CreateList_L_Rear(list_b, a, 10);
	cout<< "采用尾插法"<< endl;
	Print_L(list_b);
	int num;
	GetElem_L(list_a, 5, num);
	ListDelete_L(list_a, 5, num);
	cout<< "list_a表中5号位置的数为:"<< num<< endl;
	Print_L(list_a);
	ListInsert_L(list_a, 5, 5);
	Print_L(list_a);
	cout<

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:数据结构单链表-创新互联
本文网址:http://pwwzsj.com/article/cdesgi.html