#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int num;
int data;
struct node * next;
}node;
node * init(int );
void display(node *);
void dis(node *);
void modify(node *, int ,int );
void del(node * , int );
void insert(node *, int ,int );
int main(void)
{
int n;
node * head, * current;
scanf("%d", &n);
head = init(n);
display(head);
insert(head, 2, 100);
display(head);
modify(head, 5, 10);
display(head);
del(head, 4);
display(head);
dis(head);
return 0;
}
node * init(int n)
{
int i;
node * head, * current, * pre;
head = (node *)malloc(sizeof(node));
head->next = NULL;
pre = head;
for (i = 1; i <= n; ++i)
{
current = (node *)malloc(sizeof(node));
pre->next = current;
current->num = i;
current->data = 10 - i;
current->next = NULL;
pre = current;
}
return head;
}
void insert(node * head, int p, int k)
{
node * current, * t, * newnode;
current = head;
while (current->next->num != p)
current = current->next;
t = current->next;
newnode = (node *)malloc(sizeof(node));
newnode->num = current->num;
newnode->data = k;
newnode->next = t;
current->next = newnode;
current = newnode;
while (current->next != NULL)
{
current->num++;
current = current->next;
}
current->num++;
}
void modify(node * head, int p, int k)
{
node * current;
current = head->next;
while (current->num != p)
current = current->next;
current->data = k;
}
void del(node * head, int p)
{
node * current, * t;
current = head;
while (current->next->num != p)
current = current->next;
t = current->next;
current->next = current->next->next;
free(t);
current = current->next;
while (current->next != NULL)
{
current->num--;
current = current->next;
}
current->num--;
}
void display(node * head)
{
node * current;
current = head->next;
while (current->next != NULL)
{
printf("%d ", current->num);
current = current->next;
}
printf("%d\n", current->num);
current = head->next;
while (current->next != NULL)
{
printf("%d ", current->data);
current = current->next;
}
printf("%d\n\n", current->data);
}
void dis(node * head)
{
node * current, * p;
current = head->next;
while ((p = current->next) != NULL)
{
free(current);
current = p;
}
free(current);
}