fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct node {
  5. int val;
  6. struct node *next;
  7. }Node;
  8.  
  9. Node *head = NULL;
  10.  
  11. Node* createN(int x){
  12. Node *newnode;
  13. newnode = (Node *)malloc(sizeof(Node));
  14. newnode->val = x;
  15. newnode->next = NULL;
  16. return newnode;
  17. }
  18.  
  19. void initL(int n){
  20. int x,i;
  21. Node *p;
  22. scanf("%d",&x);
  23. head = createN(x);
  24. p = head;
  25. for(i=1;i<n;i++){
  26. scanf("%d",&x);
  27. p->next = createN(x);
  28. p = p->next;
  29. }
  30. }
  31.  
  32. void freeL(){
  33. Node *p;
  34. while(head!=NULL){
  35. p = head->next;
  36. free(head);
  37. head = p;
  38. }
  39. }
  40.  
  41. void printL(){
  42. Node *p = head;
  43. while(p != NULL){
  44. printf("%d ",p->val);
  45. p = p->next;
  46. }
  47. printf("\n");
  48. }
  49.  
  50.  
  51. void insMiddle(int n, int x){
  52. int i;
  53. Node *p,*q;
  54. p = head; // 1
  55. for(i=1;i<n;i++){ // 2
  56. p = p->next; // 2
  57. }
  58. q = createN(x); // 3
  59. q->next = p->next; // 4
  60. p->next = q; // 5
  61. }
  62.  
  63. void delMiddle(int n){
  64. int i;
  65. Node *p,*q;
  66. p = head; // 1
  67. for(i=1;i<n-1;i++){ // 2
  68. p = p->next; // 2
  69. }
  70. q = p->next; // 3
  71. p->next = q->next; // 4
  72. free(q); // 5
  73. }
  74.  
  75.  
  76. int main(void){
  77. int i,n,y1,x1,y2;
  78. scanf("%d",&n);
  79. initL(n);
  80. printL();
  81. scanf("%d %d",&y1,&x1);
  82. insMiddle(y1,x1);
  83. printL();
  84. scanf("%d",&y2);
  85. delMiddle(y2);
  86. printL();
  87. freeL();
  88. return 0;
  89. }
Success #stdin #stdout 0.01s 5296KB
stdin
2
2 4 
1 3
2
stdout
2 4 
2 3 4 
2 4