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

📄 list_l1.c

📁 这是一个顺序列表的基本操作
💻 C
字号:
#include<stdio.h>
#include<GRAPHICS.H>
#define ERROR 0
#define OK 1
#define TURE 1
#define FALSE 0
#define OVERFLOW -2
typedef int  ElemType;
typedef  int status;
typedef  struct  LNode
{
    ElemType   data;
    struct LNode *next;
}*LinkList,Lnode;

status InitList_L(LinkList L)
{
   L=(LinkList)malloc(sizeof(Lnode));
   if(!L)
   exit( OVERFLOW);
   L->next=NULL;
   return   OK;
}

status ListInsert_L(LinkList L, ElemType i, ElemType *e)
{
  int j=1;
  LinkList new,p=L->next;
  if(i<1||!p)
  return ERROR;
  while(p&&j<i-1)
  {
   p=p->next;
   j++;
  }
  new=(LinkList)malloc(sizeof(Lnode));
  new->data=*e;
  new->next=p->next;
  p->next=new;
  return  OK;
}

status getElem_L(LinkList L, ElemType i, ElemType *e)
{
    int j=1;
     LinkList p=L->next;
    if(i<1||!p)
    return ERROR;
      while(p&&j<i)
	{p=p->next;j++;}
	*e=p->data;
      return OK;
}

/*ElemType  compare( )
{
  int i=1;
    LinkList p=L->next;
    while(p)
{
return  p->data;
 p=p->next;
i++;}
}
}*/

status LocateElem_L(LinkList L, ElemType e, ElemType *i)
{
  LinkList p=L->next;
  *i = 0;
  while(p)
{
  if(e!=p->data)
    (*i)++;
  else
  {
    ++(*i);
    printf("%d\n",*i);
    break;
  }
  p=p->next;
 }
 if(p==NULL)
   printf("it's NO the number!\n");
 return OK;
}

status deleteElem_L(LinkList L, ElemType i, ElemType *e)
{
   int  j=1;
    LinkList p=L->next,q;
   if(j<1||!p)
    return ERROR;
     while(p&&j<i-1)
  {
   p=p->next;
  }
  q=p->next;
 *e=q->data;
 p->next=q->next;
 free(q);
 return  OK;
}

status ListLength_L(LinkList L,ElemType *e)
{
   LinkList p=L->next;
  int i=0;
  while(p)
   {
  p=p->next;
   i++;
   }
*e=i;
return OK;
}

status clear_L(LinkList L)
{
  LinkList q=L->next,p;
  p=q;
  while(q)
  {
   p=q->next;
   free(q);
   q=p;
  }
   L->next=NULL;
  return OK;
}
status  Invert_L(LinkList  L)
{
  LinkList p,q,t;
 p=L->next;
 q=p->next;
  p->next=NULL;
 while(q)
{
   t=q->next;
  L->next=q;
  q->next=p;
  p=q;q=t;
}
return OK;
}

status MergeList_L(LinkList La,LinkList Lb,LinkList Lc)
{
 LinkList pa,pb,pc;
 pa=La->next;pb=Lb->next;
 pc=La=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;
   free(Lb);
return OK;

}

status AddList_L(LinkList L)
{
  int   elem=1;
 LinkList  p,q;
 //p=(LinkList)malloc(sizeof(Lnode));
 q=L;

  printf("input the elemtype,if finish please print'0':\n");

   while(elem!=0)
    {
   scanf("%d",&elem);
   if(elem==0)
	 p->next=NULL;
    else{
    p=(LinkList)malloc(sizeof(Lnode));
      p->data=elem;
      q->next=p;
      q=p;
     }
    }
   return OK;
}

status printList_L(LinkList L)
{
    LinkList p=L->next;
    if(p==NULL)
    printf("it's have no number!\n");
else
{
   while(p)
   {
    printf("%5d",p->data);
    p=p->next;
   }
   printf("\n");
   }
   return  OK;
}
void main()
{
  LinkList La,Lb,Lc;
  int i=100,*q=&i,*p,*w,*m,*z;

InitList_L(La);
printf("AddLa:\n");
AddList_L(La);
printList_L( La);

InitList_L(Lb);
printf("AddLb:\n");
AddList_L(Lb);
printList_L( Lb);

/*
   printf("input the wanted get  elemlocate:\n");
   scanf("%d",&k);
   GetElem_L( L, k, q);
   printf("%d\n",*q);
   LocateElem_L( L,3,w);
   printf("%d\n",*i);

   printf("input the wanted deleted locate:\n");
   scanf("%d",&i);

    printf("%d\n",*p);
    printElem_L(L);
    clear_L(L);
    printElem_L(L);
*/
    MergeList_L( La,Lb,Lc);
    printf("input the MergeList_L:\n");
    printList_L( Lc);
    printf("input the Invert_L:\n");
    Invert_L( Lc);
    printList_L( Lc);
    printf("the elem 3's locate:");
    LocateElem_L( Lc,3,w);
    ListLength_L(Lc,m);
    printf("the length=");
    printf("%d\n",*m);

   deleteElem_L(Lc,2,p);
   printf("the delete second elem=%d\nthen print Lc:\n",*p);
   printList_L(Lc);
   printf("when insert third locate elem=100,then print Lc:\n");
   ListInsert_L(Lc, 3, q);
   printList_L(Lc);

   getElem_L( Lc, 4, z);
   printf("the fouth pos elem=%d\n",*z);
   printf("using the clear_L,then print Lc:\n");
   clear_L(Lc);
   printList_L(Lc);
}





⌨️ 快捷键说明

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