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

📄 jay.c

📁 有关数据结构的一些例子。用C语言编写的。非常有价值的程序。对初学者有指导借鉴意义。
💻 C
字号:
#define NULL 0
#include "stdio.h"
#include "stdlib.h"
typedef int datatype;

typedef struct node
{ datatype data;
  struct node *next;
} linklist;
linklist *head,*p,*q;
int i;

linklist *CREAT()
{ int ch;
  linklist *s,*r;
  head=(struct node*)malloc(sizeof(linklist));
  r=head;
  printf("链表:\n");
  scanf("%d",&ch);
  while(ch!=NULL)
  { s=(struct node*)malloc(sizeof(linklist));
    s->data=ch;
    r->next=s;
    r=s;
    printf("%d\t",s->data);
    scanf("%d",&ch);
  }
  r->next=NULL;
  return (head);
}

linklist *GET(head,h)
linklist *head;
int h;
{ int j;
  linklist *p;
  p=head; j=0;
  while((p->next!=NULL)&&(j<h
  ))
  {
    p=p->next;
    j++;
  }
  if(h==j)
   {
    return (p);
   }
  else
    return (NULL);
 }

linklist *LOCATE(head,key)
linklist *head;
datatype key;
{ linklist *l;
  l=head->next;
  while(l!=NULL)
   if(l->data!=key)
     l=l->next;
   else
     break;
 return(l);
}

INSERT1(head,p,x)
linklist *head,*p;
datatype x;
{ linklist *s,*q;
  s=(struct node*)malloc(sizeof(linklist));
  s->data=x;
  q=head;
  while(q->next!=p)
   q=q->next;
   s->next=p;
   q->next=s;
 }

INSERT2(p,x,j)
datatype x;
int j;
{ linklist *l;
  l=GET(p,j);
  if(l==NULL)
    printf("error");
  else
    INSERT1(p,l,x);
}

DELETE1(r)
linklist *r;
{ linklist *t;
  t=r->next;
  r->next=t->next;
  free(t);
}

DELETE2(p,k)
int k;
{ linklist *r;
  int j;
  j=k-1;
  r=GET(p,j);
  if((r!=NULL) && (r->next!=NULL))
    DELETE1(r);
  else
    printf("error");
}

main()
{
 linklist *b,*r,*w;
 int j,t,k,m,n;
 linklist *CREAT();
 linklist *GET();
 p=CREAT();
 printf("\n按位查找:\n");
 scanf("%d",&j);
 b=GET(p,j);
 printf("%d",b->data);
 printf("\n按值查找:\n");
 scanf("%d",&t);
 r=LOCATE(p,t);
 printf("%d\t",r->data);
 printf("\n插入哪个元素之前的元素:\n");
 scanf("%d",&m);
 printf("要插入的元素:\n");
 scanf("%d",&k);
 INSERT2(p,k,m);
 w=p;
 while(p->next!=NULL)
 { printf("%d\t",p->next->data);
   p=p->next;
 }
 printf("\n删除哪个元素:\n");
 scanf("%d",&n);
 DELETE2(w,n);
 while(w->next!=NULL)
 { printf("%d\t",w->next->data);
   w=w->next;
 }
 printf("\n");
} 



⌨️ 快捷键说明

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