Code
#include<stdio.h>
#include<stdlib.h>
#define flag 0
typedef struct node
{
int data;
struct node *next;
} LNode,*LinkList;
LinkList InitLinkList()
{
LinkList L;
LNode *s;
int x;
L->data=NULL;
L->next=NULL;
scanf("%d",&x);
while(x!=flag)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=L;
L=s;
scanf("%d",&x);
}
return L;
}
void DispLinkList(LinkList L)
{
LNode *p=L;
while(p->next!=NULL)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n");
}
LNode *LocLinkList(LinkList L,int pos)
{
LNode *p=L;
int j=0;
while(p->next&&j<pos)
{p=p->next;
j++;
}
if(j==pos)
return p;
else
return NULL;
}
int InsLinkList(LinkList L,int pos,int e)
{
LNode *p=L,*s;
p=LocLinkList(L,pos-1);
if(p==NULL)
{
printf("haha,error");
return 0;
}
else
{
s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
}
int DelLinkList(LinkList L,int pos)
{
LinkList p,s;
p=LocLinkList(L,pos-1);
if(p==NULL)
{printf("there is no data");
return -1;
}
else
if (p->next==NULL)
{printf("there is no data");
return 0;
}
else
{
s=p->next;
p->next=s->next;
free(s);
}
return 1;
}
void menu()
{
printf("0----exit\n");
printf("1----locate\n");
printf("2----insert\n");
printf("3----delete\n");
}
void main()
{
LinkList head;
LNode *temp;
int MenuNumber;
int pos,e;
printf("please input the initData:\n");
head=InitLinkList();
DispLinkList(head);
menu();
scanf("%d",&MenuNumber);
while (MenuNumber!=0)
{
switch(MenuNumber)
{
case 1:
printf("please input what you want to locate:\n");
scanf("%d",&pos);
temp=LocLinkList(head,pos);
printf("%d\n",temp->data);
break;
case 2:
printf("please input what you want to insert:\n");
scanf("%d%d",&pos,&e);
InsLinkList(head,pos,e);
DispLinkList(head);
break;
case 3:
printf("please input what you want to delete:\n");
scanf("%d",&pos);
DelLinkList(head,pos);
DispLinkList(head);
break;
default:printf("error,^^^\n");
}
scanf("%d",&MenuNumber);
}
}
#include<stdio.h>
#include<stdlib.h>
#define flag 0
typedef struct node
{
int data;
struct node *next;
} LNode,*LinkList;
LinkList InitLinkList()
{
LinkList L;
LNode *s;
int x;
L->data=NULL;
L->next=NULL;
scanf("%d",&x);
while(x!=flag)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=L;
L=s;
scanf("%d",&x);
}
return L;
}
void DispLinkList(LinkList L)
{
LNode *p=L;
while(p->next!=NULL)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n");
}
LNode *LocLinkList(LinkList L,int pos)
{
LNode *p=L;
int j=0;
while(p->next&&j<pos)
{p=p->next;
j++;
}
if(j==pos)
return p;
else
return NULL;
}
int InsLinkList(LinkList L,int pos,int e)
{
LNode *p=L,*s;
p=LocLinkList(L,pos-1);
if(p==NULL)
{
printf("haha,error");
return 0;
}
else
{
s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
}
int DelLinkList(LinkList L,int pos)
{
LinkList p,s;
p=LocLinkList(L,pos-1);
if(p==NULL)
{printf("there is no data");
return -1;
}
else
if (p->next==NULL)
{printf("there is no data");
return 0;
}
else
{
s=p->next;
p->next=s->next;
free(s);
}
return 1;
}
void menu()
{
printf("0----exit\n");
printf("1----locate\n");
printf("2----insert\n");
printf("3----delete\n");
}
void main()
{
LinkList head;
LNode *temp;
int MenuNumber;
int pos,e;
printf("please input the initData:\n");
head=InitLinkList();
DispLinkList(head);
menu();
scanf("%d",&MenuNumber);
while (MenuNumber!=0)
{
switch(MenuNumber)
{
case 1:
printf("please input what you want to locate:\n");
scanf("%d",&pos);
temp=LocLinkList(head,pos);
printf("%d\n",temp->data);
break;
case 2:
printf("please input what you want to insert:\n");
scanf("%d%d",&pos,&e);
InsLinkList(head,pos,e);
DispLinkList(head);
break;
case 3:
printf("please input what you want to delete:\n");
scanf("%d",&pos);
DelLinkList(head,pos);
DispLinkList(head);
break;
default:printf("error,^^^\n");
}
scanf("%d",&MenuNumber);
}
}