#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}Linklist;
void InitLinklist(Linklist *L)
{
L->next=NULL;
}
void CreateLinklistByHead(Linklist *L,int n)
{
int i;
srand(time(0));
Linklist *p;
for(i=0;i<n;i++)
{
p=(Linklist *)malloc(sizeof(Linklist));
p->data=rand()%100+1;
p->next=L->next;
L->next=p;
}
}
void CreateLinklistByRear(Linklist *L,int n)
{
int i;
srand(time(0));
Linklist *p;
Linklist *r;
r=L;
for(i=0;i<n;i++)
{
p=(Linklist *)malloc(sizeof(Linklist));
p->data=rand()%100+1;
r->next=p;
r=p;
}
r->next=NULL;
}
Status GetElemValue(Linklist *L,int i,ElemType *e)
{
int j=1;
Linklist *p;
p=L;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)
return ERROR;
*e=p->data;
return OK;
}
Status InsertLinklistValue(Linklist *L,int i,int value)
{
Linklist *p,*r;
int j=1;
p=L;
r=(Linklist *)malloc(sizeof(Linklist));
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)
return ERROR;
r->data=value;
r->next=p->next;
p->next=r;
return OK;
}
Status DeleteLinklistValue(Linklist *L,int i,ElemType *e)
{
Linklist *p,*r;
int j=1;
p=L;
r=(Linklist *)malloc(sizeof(Linklist));
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)
return ERROR;
r=p->next;
p->next=r->next;
*e=r->data;
free(r);
return OK;
}
void PrintLinklist(Linklist *L)
{
Linklist *p;
p=(Linklist *)malloc(sizeof(Linklist));
p=L->next;
while(p!=NULL)
{
printf("%d ->",p->data);
p=p->next;
}
printf("\n");
}
int main () {
int n,num;
Linklist *L;
InitLinklist(L);
scanf("%d",&n);
CreateLinklistByRear(L,n);
PrintLinklist(L);
InsertLinklistValue(L,3,60);
PrintLinklist(L);
DeleteLinklistValue(L,2,&num);
printf("%d\n",num);
PrintLinklist(L);
return 0;
}