码迷,mamicode.com
首页 > 其他好文 > 详细

链表基本操作集合

时间:2014-10-23 00:03:39      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   for   strong   div   2014   on   

链表基本操作集合


//List code by Denis

#include <stdio.h>
#include <malloc.h>
#define ture 1 
#define false 0

typedef int ElemType;
typedef struct list{
	ElemType data;
	struct list *next;
}LNode;
 


//Create a list,nLength is the length of the line list
LNode *Create(int nLength)
{
	int i;
	LNode *Ln_Head,*Ln_tmp1,*Ln_tmp2;
	Ln_Head = (LNode *)malloc(sizeof(LNode));
	Ln_tmp1 = Ln_Head;   /*Save the Head pointor*/
	printf("Input %d data\n",nLength);
	for(i=0;i<nLength;i++)
	{	
		Ln_tmp2 = (LNode *)malloc(sizeof(LNode));
		scanf("%d",&Ln_tmp2->data);//Input the data

		//Insert the data to the end odf list
		Ln_tmp1->next = Ln_tmp2;
		Ln_tmp1 = Ln_tmp2;
		Ln_tmp2->next = NULL;

	}
	return Ln_Head;
}

void ShowList(LNode *Head)
{
	LNode *P= Head->next;
	printf("The list is:\n");
	while(P)
	{
		printf("%d ",P->data);
		P = P->next;
	}
	printf("\n");
	
}

//Get the length of the List
int ListLength(LNode *Head)
{
	int length=0;
	LNode *P;
	P = Head->next;
	while(P)
	{
		length++;
		P = P->next;
	}

	return length;
}

//Get the number i data that in the list to the e parameter
//i must be >0,and <= List's length
ElemType GetElem(LNode *Head, int i, ElemType e)
{
	int j=0;
	LNode *P, *tmp;
	P = Head->next;	
	while(P && j!=i)
	{
		tmp = P;//Save the P
		P = P->next;
		j++;
	}
	return tmp->data;
}

//verify whether E is the one of list
//if return value==1,E is in the list
int LocateElem(LNode *Head, ElemType E)
{
	LNode *P;
	P = Head->next;
	while(P)
	{
		if(P->data == E)//,E is in the list
			return ture;
		else
			P = P->next;
	}
	return false;
}

//Insert E to the list' tail
int ListInsert(LNode *Head, int ListLength, ElemType E)
{
	LNode *P, *Tail;
	P = Head->next;
	//Get the tail pointor of the list
	while(P->next)
	{
		P = P->next;
	}
	Tail = P;
	P = (LNode *)malloc(sizeof(LNode));
	P->data = E;
	Tail->next = P;
	P->next = NULL;
	//ListLength++;
}

LNode *Union(LNode *Head1, LNode *Head2)
{
	
	int L1_len = ListLength(Head1);
	int L2_len = ListLength(Head2);
	ElemType E=Head2->next->data;	
	int i=1; 
	printf("Union list_1 and list_2\n");
	for(i=1; i<=L2_len; i++)
	{
		E=GetElem(Head2,i,E);
			if(!LocateElem(Head1,E))
				ListInsert(Head1,++L1_len, E);
	}

	return Head1;
}


void main()
{
	LNode *Create(int nLength);
	void ShowList(LNode *Head);

	LNode *Head1,*Head2;
	int nLength;
	int equal = 0;
	int Verify_eq;
	ElemType Elem_E=0;

	Head1 = Create(4);//Create the first list that has 4 data
	ShowList(Head1);

	Head2 = Create(4);//Create the second list that has 4 data
	ShowList(Head2);
	//nLength = ListLength(Head2);//Get the length of the list

	Elem_E = GetElem(Head1, 2,Elem_E);
	Verify_eq = LocateElem(Head1, 5);
	//debug insert function
	//ListInsert(Head1,nLength,10000);
	Head1 = Union(Head1,Head2);
	ShowList(Head1);

	getch();


}



链表基本操作集合

标签:style   blog   io   ar   for   strong   div   2014   on   

原文地址:http://blog.csdn.net/denyz/article/details/40385243

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!