⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linklist.cpp

📁 数据结构经典课件(附带各章的经典算法) 具体代码是使用C语言编写的
💻 CPP
字号:
#include <cstdlib>
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LinkList;

void InitList(LinkList *&L)
{
  L=(LinkList *)malloc(sizeof(LNode));
  L->next=NULL;
}

void CreateListR(LinkList *&L,ElemType a[],int n)
{
  LinkList *s,*r;
  L=(LinkList *)malloc(sizeof(LNode));
  L->next=NULL;
  r=L;
  for(int i=0;i<n;i++)
  { 
    s=(LinkList *)malloc(sizeof(LNode));
	s->data=a[i];
	r->next=s;
	r=s;
  }
  r->next =NULL;
}

int ListLength_L(LinkList *L)
{
  int n=0;
  LinkList *p;
  p=L->next ;
  while(p!=NULL)
  {  n++;
     p=p->next ;
  }
  return n;
}

bool GetElem(LinkList *L,int i,LinkList *&p)
{
   int j=1;
   p=L->next ;
   while(p!=NULL && j<i)
   { p=p->next ;
     j++;
   }
   if(p==NULL)
	   return false;
   else
       return true;
}
bool LocateElem(LinkList *L,ElemType e,LinkList *&p)
{
    p=L->next ;
	while(p!=NULL && p->data!=e)
	   p=p->next ;
	if(p==NULL)
		return false;
	else
	    return true;
}

bool ListInsert(LinkList *&L,int i,ElemType e)
{
   if(i<1)
	   return false;
   int j=0;
   LinkList *p;
   p=L ;
   while(p!=NULL && j<i-1)
   { p=p->next ;
     j++;
   }
   if( p==NULL)
	   return false;
   LinkList *s;
   s=(LinkList *)malloc(sizeof(LNode));
   s->data=e;
   s->next=p->next;
   p->next=s;
   return true;
}
bool ListDelete(LinkList *&L,int i,ElemType &e)
{
   if(i<1)
	   return false;
   int j=0;
   LinkList *p,*q;
   p=L ;
   while(p!=NULL && j<i-1)
   { p=p->next ;
     j++;
   }
   if(p==NULL ||  p->next ==NULL)
	   return false;
   q=p->next ;
   p->next =q->next ;
   e=q->data ;
   free(q);
   return true;
}
void invert(LinkList *&L)
{
  LinkList *p,*q;
  q=L->next;
  L->next=NULL;
  while(q!=NULL)
  {
     p=q;
	 q=q->next ;
	 p->next =L->next ;
	 L->next =p; 
  }
}
void concat(LinkList *&L,LinkList *L1)
{
	LinkList *p;
	p=L->next ;
	while(p->next != NULL)
		p=p->next ;
	p->next =L1->next ;
	free(L1);
}
void main()
{
  LinkList *L,*p,*r,*L1;
  ElemType a[]={55,66,77},e;
  ElemType b[]={10,20,30,40};
  CreateListR(L,a,3);
  CreateListR(L1,b,4);
  concat(L,L1);
  int len=ListLength_L(L);
  /*
  bool b=GetElem(L,4,p);
  b=LocateElem(L,33,p);
  b=ListInsert(L,4,100);
  b=ListDelete(L,4,e);
  invert(L);
  r=L;
  p=L->next ;
   while(p!=NULL)
   {
	   r=p;p=p->next ;
   }*/
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -