#include <stdio.h>
typedef struct Link{
int elem;
struct Link * next;
}link;
link * initLink(){
link * p = (link*)malloc(sizeof(link));
link * temp = p;
for(int i = 1; i<5; i++){
link *a = (link*)malloc(sizeof(link));
a -> elem = i;
a -> next = NULL;
temp->next = a;
temp = temp -> next;
}
return p;
}
void display(link *p){
link *temp = p;
while(temp->next){
temp = temp -> next;
printf("%d ", temp -> elem);
}
printf("\n");
}
link * insertElem(link *p, int elem, int add){
link *temp = p;
for(int i=1;i<add;i++){
temp = temp->next;
if(temp == NULL){
printf("插入位置无效\n");
return p;
}
}
link *c = (link*)malloc(sizeof(link));
c->elem = elem;
c->next = temp->next;
temp -> next = c;
return p;
}
link * selectElem(link *p, int elem){
link * t = p;
while(t->next){
t = t->next;
if(t->elem == elem){
return t;
}
}
return NULL;
}
link * selectLast(link *p, link * temp){
link * t = p;
while(t->next){
t = t->next;
if(t->next == temp){
return t;
}
}
return NULL;
}
link * delElem(link *p, int del){
link *temp = selectElem(p,del);
link *last = selectLast(p,temp);
last -> next = last -> next -> next;
free(temp);
return p;
}
link *updateElem(link *p, int add, int newElem){
link * temp = selectElem(p,add);
temp -> elem = newElem;
return p;
}
int main () {
link *p = initLink();
display(p);
p = insertElem(p,5,4);
display(p);
p = delElem(p,5);
display(p);
return 0;
}