#include <stdio.h>
#include <stdlib.h>
struct Node;
typedef struct Node *PNde;
struct Node{
int info;
PNde link;
};
typedef struct Node *LinkList;
LinkList clist(int n)
{
PNde p,h,s;
int i;
h=(PNde)malloc(sizeof(struct Node));
if(h==NULL) return 0;
h->link=NULL;
p=h;
for(i=1;i<=n;i++)
{
s= (PNde) malloc(sizeof(struct Node));
if(s==NULL) return 0;
p->link=s;
s->info=i;
s->link=NULL;
p=s;
}
return(h);
}
void PrintList(LinkList h)
{
LinkList p;
p=h->link;
printf("\n");
while(p)
{
printf("%d",p->info);
p=p->link;
printf(" ");
}
}
int insertPost_link(LinkList llist,int i,int x,int n){
PNde q,p;
int j;
if(i<1 || i>n+1)
printf("错误\n");
else
{
j=0;
p=llist;
while(j<i-1)
{
p=p->link;
j++;
}
q=(PNde)malloc(sizeof(struct Node));
q->info=x;
q->link=p->link;
p->link=q;
}
return 0;
}
int deleteV_link(LinkList llist,int x)
{
PNde p,q;
p=llist;
if(p==NULL) return 0;
while(p->link!=NULL&&p->link->info!=x)
p=p->link;
if(p->link==NULL){
printf("错误!\n");return 0;
}
else{
q=p->link;
p->link=q->link;
free(q);return 1;
}
}
int locate_link(LinkList llist,int x){
PNde p,q;
p=llist;
if(p==NULL) return 0;
while(p->link!=NULL&&p->link->info!=x)
p=p->link;
if(p->link==NULL){
printf("不存在%d\n",x);return 0;
}
else{
q=p->link;
printf("%d",q->info);
return 0;
}
}
int modify_link(LinkList llist,int x,int i)
{
PNde p,q;
p=llist;
if(p==NULL) return 0;
while(p->link!=NULL&&p->link->info!=x)
p=p->link;
if(p->link==NULL){
printf("Not exist!\n");return 0;
}
else{
q=p->link;
q->info=i;
return 0;
}
}
int main()
{
int number;
printf("请输入链表个数:");
scanf("%d",&number);
printf("\n");
PNde head;
head=clist(number);
PrintList(head);
printf("\n");
printf("\n");
int i;
while(1)
{
printf("\n");
printf("请选择操作:1、插入 2、删除 3、查找 4、修改 \n");
printf("\n");
scanf("%d",&i);
printf("\n");
switch(i)
{
case 1:
printf("请输入要插入的位置和值:\n");
printf("\n");
int a,b;
scanf("%d %d",&a,&b);
printf("\n");
int A;
A=insertPost_link(head,a,b,number);
number++;
break;
case 2:
printf("请输入要删除的值:");
printf("\n");
int c;
scanf("%d",&c);
printf("\n");
int D;
D=deleteV_link(head,c);
number--;
break;
case 3:
printf("请输入查找的值:");
printf("\n");
int d;
scanf("%d",&d);
printf("----\n");
int L;
L=locate_link(head,d);
printf("\n");
break;
case 4:
printf("请输入你需要更改的数值和内容:");
printf("\n");
int f,g;
scanf("%d %d",&f,&g);
printf("\n");
int X;
X=modify_link(head,f,g);
break;
default:
printf("输入错误!");
}
PrintList(head);
printf("\n");
}
return 0;
}
#include <stdlib.h>
struct Node;
typedef struct Node *PNde;
struct Node{
int info;
PNde link;
};
typedef struct Node *LinkList;
LinkList clist(int n)
{
PNde p,h,s;
int i;
h=(PNde)malloc(sizeof(struct Node));
if(h==NULL) return 0;
h->link=NULL;
p=h;
for(i=1;i<=n;i++)
{
s= (PNde) malloc(sizeof(struct Node));
if(s==NULL) return 0;
p->link=s;
s->info=i;
s->link=NULL;
p=s;
}
return(h);
}
void PrintList(LinkList h)
{
LinkList p;
p=h->link;
printf("\n");
while(p)
{
printf("%d",p->info);
p=p->link;
printf(" ");
}
}
int insertPost_link(LinkList llist,int i,int x,int n){
PNde q,p;
int j;
if(i<1 || i>n+1)
printf("错误\n");
else
{
j=0;
p=llist;
while(j<i-1)
{
p=p->link;
j++;
}
q=(PNde)malloc(sizeof(struct Node));
q->info=x;
q->link=p->link;
p->link=q;
}
return 0;
}
int deleteV_link(LinkList llist,int x)
{
PNde p,q;
p=llist;
if(p==NULL) return 0;
while(p->link!=NULL&&p->link->info!=x)
p=p->link;
if(p->link==NULL){
printf("错误!\n");return 0;
}
else{
q=p->link;
p->link=q->link;
free(q);return 1;
}
}
int locate_link(LinkList llist,int x){
PNde p,q;
p=llist;
if(p==NULL) return 0;
while(p->link!=NULL&&p->link->info!=x)
p=p->link;
if(p->link==NULL){
printf("不存在%d\n",x);return 0;
}
else{
q=p->link;
printf("%d",q->info);
return 0;
}
}
int modify_link(LinkList llist,int x,int i)
{
PNde p,q;
p=llist;
if(p==NULL) return 0;
while(p->link!=NULL&&p->link->info!=x)
p=p->link;
if(p->link==NULL){
printf("Not exist!\n");return 0;
}
else{
q=p->link;
q->info=i;
return 0;
}
}
int main()
{
int number;
printf("请输入链表个数:");
scanf("%d",&number);
printf("\n");
PNde head;
head=clist(number);
PrintList(head);
printf("\n");
printf("\n");
int i;
while(1)
{
printf("\n");
printf("请选择操作:1、插入 2、删除 3、查找 4、修改 \n");
printf("\n");
scanf("%d",&i);
printf("\n");
switch(i)
{
case 1:
printf("请输入要插入的位置和值:\n");
printf("\n");
int a,b;
scanf("%d %d",&a,&b);
printf("\n");
int A;
A=insertPost_link(head,a,b,number);
number++;
break;
case 2:
printf("请输入要删除的值:");
printf("\n");
int c;
scanf("%d",&c);
printf("\n");
int D;
D=deleteV_link(head,c);
number--;
break;
case 3:
printf("请输入查找的值:");
printf("\n");
int d;
scanf("%d",&d);
printf("----\n");
int L;
L=locate_link(head,d);
printf("\n");
break;
case 4:
printf("请输入你需要更改的数值和内容:");
printf("\n");
int f,g;
scanf("%d %d",&f,&g);
printf("\n");
int X;
X=modify_link(head,f,g);
break;
default:
printf("输入错误!");
}
PrintList(head);
printf("\n");
}
return 0;
}