#define _CRT_SECURE_NO_WARNINGS
#include
#include
typedef struct LNode {
int data;
struct LNode* next;
}LNode;
LNode* LNode_Init(LNode* L) {
L->next = NULL;
return L;
}
LNode* Head_Insert(LNode* L)
{
LNode* s; int x;
x=scanf("%d", &x);
while (x != 9999) {
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = L->next;
L->next = s;
scanf("%d", &x);
}
return L;
}
void LNode_Print(LNode* L)
{
LNode* s;
s = L->next;
while (s) {
printf("%dn", s->data);
s = s->next;
}
}
LNode* Get_LNode(LNode* L,int n) {
int i = 1;
if (n == 0)
return L;
if (n < 0)
return NULL;
LNode* p = (LNode*)malloc(sizeof(LNode));
p = L->next;
while (p&&i
p = p->next;
i++;
}
return p;
}
LNode* Del_LNode(LNode* L,int n ) {
LNode* p,*q;
p = (LNode*)malloc(sizeof(LNode));
q = (LNode*)malloc(sizeof(LNode));
p=Get_LNode(L, n-1);
q = p->next;
p->next = q->next;
free(q);
return L;
}
LNode* LNode_Insert(LNode*L, int n,int data) {
LNode* q, * p;
p = (LNode*)malloc(sizeof(LNode));
q = (LNode*)malloc(sizeof(LNode));
p = Get_LNode(L, n - 1);
q->data = data;
q->next = p->next;
p->next = q;
return L;
}
int main()
{
LNode *L;
L = (LNode*)malloc(sizeof(LNode));
L=LNode_Init(L);
L=Head_Insert(L);
LNode_Print(L);
printf("n%dnn", Get_LNode(L,3)->data);
L = Del_LNode(L, 3);
LNode_Print(L);
L = LNode_Insert(L, 4, 5);
printf("nn");
LNode_Print(L);
return 0;
}



