📄 2-3-2.txt
字号:
/*链表的基本运算与实现*/
#include <stdio.h>
#include <malloc.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}LNode,*LinkList;
void menu();
LinkList Create_LinkList1();
LinkList Create_LinkList2();
int Length_LinkList(LinkList L);
LNode *Get_LinkList(LinkList L,int i);
LNode *Locate_LinkList(LinkList L,datatype x);
int Insert_LinkList(LinkList L,int i,datatype x);
int Del_LinkList(LinkList L,int i);
void main()
{
int n,m=1;
LinkList L;
/*clrscr();*/
while(m)
{
menu();
scanf("%d",&n);
switch(n)
{
case 1:{
LNode *p;
L=Create_LinkList1();
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
break;
}
case 2:{
LNode *p;
L=Create_LinkList2();
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
break;
}
case 3:{
int length;
length=Length_LinkList(L);
printf("table length is:%4d",length);
break;
}
case 4:{
LinkList p;
int i;
printf("please input xu hao i:\n");
scanf("%d",&i);
p=Get_LinkList(L,i);
if(p==NULL)
{
printf("place is wrong!");
}
else
{
printf("%5d",p->data);
}
break;
}
case 5:{
LinkList p;
datatype x;
printf("please input a value x:\n");
scanf("%d",&x);
p=Locate_LinkList(L,x);
if(p==NULL)
{
printf("value is wrong!");
}
else
{
printf("%5d",p->data);
}
break;
}
case 6:{
int i,success;
datatype x;
LinkList p=NULL;
printf("please input i and x:\n");
scanf("%d%d",&i,&x);
success=Insert_LinkList(L,i,x);
if(success==1)
{
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
}
else
{
printf("no success!");
}
break;
}
case 7:{
int i,success;
LinkList p=NULL;
printf("please input i\n");
scanf("%d",&i);
success=Del_LinkList(L,i);
if(success==1)
{
p=L->next;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
}
else
{
printf("no success!");
}
break;
}
case 0:m=0;
}
}
}
void menu()
{
/*clrscr();*/
printf("\n");
printf("\t\t1.tou cha jian biao\n\n");
printf("\t\t2.wei cha jian biao\n\n");
printf("\t\t3.qiu biao chang\n\n");
printf("\t\t4.xu hao cha zhao\n\n");
printf("\t\t5.ding wei cha zhao\n\n");
printf("\t\t6.cha ru\n\n");
printf("\t\t7.shan chu\n\n");
printf("\t\t0.exit\n\n");
printf("\n\n\n\tplease select:");
}
LinkList Create_LinkList1()
{
int flag=-1;
LNode *s;
datatype x;
LinkList H;
H=(LNode*)malloc(sizeof(LNode));
H->data=-32767;
H->next=NULL;
printf("please input a value(-1 end):\n");
scanf("%d",&x);
while(x!=flag)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=H->next;
H->next=s;
printf("plaese continue input a value(-1 end):\n");
scanf("%d",&x);
}
return H;
}
LinkList Create_LinkList2()
{
int flag=-1;
LNode *s,*r;
datatype x;
LinkList H;
H=(LNode*)malloc(sizeof(LNode));
H->data=-32767;
H->next=NULL;
r=H;
printf("please input a value:\n");
scanf("%d",&x);
while(x!=flag)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
printf("plaese continue input a value(-1 end):\n");
scanf("%d",&x);
}
if(r!=NULL) r->next=NULL;
return H;
}
int Length_LinkList(LinkList L)
{
LNode *p=L;
int j=0;
while(p->next)
{
p=p->next;
j++;
}
return j;
}
LNode *Get_LinkList(LinkList L,int i)
{
LNode *p=L;
int j=0;
while(p->next!=NULL&&j<i)
{
p=p->next;
j++;
}
if(j==i)
{
return p;
}
else
{
return NULL;
}
}
LNode *Locate_LinkList(LinkList L,datatype x)
{
LNode *p=L->next;
while(p!=NULL&&p->data!=x)
{
p=p->next;
}
return p;
}
int Insert_LinkList(LinkList L,int i,datatype x)
{
LNode *p,*s;
p=Get_LinkList(L,i-1);
if(p==NULL)
{
printf("i is wrong!");
return 0;
}
else
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;
return 1;
}
}
int Del_LinkList(LinkList L,int i)
{
LinkList p,s;
p=Get_LinkList(L,i-1);
if(p==NULL)
{
printf("i-1 not exist!\n");
return -1;
}
else if(p->next==NULL)
{
printf("i not exist!\n");
return 0;
}
else
{
s=p->next;
p->next=s->next;
free(s);
return 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -