📄 jay.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 + -