数据结构(C语言版)-单链表的实现

注:为了方便编写,本人使用C++实现,与C语言并无太大差别,代码编写不是很严谨,仅供参考;

#include
#include
using namespace std;
typedef int ElemType;
#define SUCCESS 1
#define ERROR -1
int flag=0;//全局变量,判断链表是否初始化
typedef struct LinkList{
	ElemType Elem;
	LinkList* next;
}LinkList;

//1-初始化链表
void InitList(LinkList* &L){
	if(flag==0){
		L=(LinkList*)malloc(sizeof(LinkList));
		L->Elem=NULL;
		L->next=NULL;
		flag=1;//表示链表已经初始化
		cout<<"链表初始化成功!"<next=NULL;
		cout<<"链表已经清空!"<next==NULL){
			return true;
		}else{
			return false;
		}	
	}else{
		cout<<"链表不存在!无法操作!"<next==NULL){
				return length;
			}
			length++;
			L=L->next;
		}
	}else{
		cout<<"链表不存在!无法操作!"<0 && i<=ListLength(L)){
			//找到元素
			for(j=0;jnext;
			}
			e=L->Elem;
		}else{
			cout<<"查询位置错误"<Elem==e){
					i=count;
					break;
				}
				L=L->next;
				count++;
				i=ERROR;
			}
		}else{
			cout<<"空表无法操作!"<next;
			//判断cur_e是不是第一个元素
			if(L->Elem==cur_e){
				cout<<"元素"<next){
				if(L->next->Elem==cur_e){
					pre_e=L->Elem;
					cout<<"元素"<next;
			}
			cout<<"未查询到该元素!"<next){
				L=L->next;
			}
			if(L->Elem==cur_e){
				cout<<"元素"<next){
				if(p->Elem==cur_e){
					p=p->next;
					next_e=p->Elem;
					cout<<"元素"<next;
			}
			cout<<"未查询到该元素!"<ListLength(L)+1 || !L){
			cout<<"元素"<next;
		}
		//执行插入操作
		LinkList* obj=(LinkList*)malloc(sizeof(LinkList));//申请一个新的节点来存放插入的数据
		obj->Elem=e;
		obj->next=L->next;
		L->next=obj;
	}else{
		cout<<"链表不存在!无法操作!"<ListLength(L)){
			cout<<"删除位置错误或者链表不存在!"<next;
		}

		//获取被删除元素,并返回给e
		L=pre_L->next;
		e=L->Elem;

		//判断当前元素是否是最后一个
		if(L->next==NULL){
			next_L=NULL;
		}else{
			//找到被删除元素的后一个元素
			for(j=0;jnext;
			}
		}

		//执行删除操作
		pre_L->next=next_L;
	}else{
		cout<<"链表不存在!无法操作!"<next){
				L=L->next;
			}
			while(L){
				cout<Elem<<"-";
				L=L->next;
			}
			cout<>n;
	switch(n){
	case 1:
		InitList(L);
		menu(L);
	case 2:
		DestoryList(L);
		menu(L);
	case 3:
		ClearList(L);
		menu(L);
	case 4:
		if(ListEmpty(L)==true){
			cout<<"当前链表为空!"<>i;
		GetElem(L,i,e);
		cout<<"位置"<>e;
		LocateElem(L,i,e);
		if(i>0){
			cout<<"元素 "<>cur_e;
		PriorElem(L,cur_e,pre_e);
		menu(L);
	case 9:
		cout<<"请输入元素e:";
		cin>>cur_e;
		NextElem(L,cur_e,next_e);
		menu(L);
	case 10:
		cout<<"请输入数据e:";
		cin>>e;
		cout<<"请输入插入位置:";
		cin>>i;
		ListInsert(L,i,e);
		menu(L);
	case 11:
		cout<<"请输入要删除的位置i:";
		cin>>i;
		ListDelete(L,i,e);
		cout<<"元素 "<

你可能感兴趣的:(数据结构)