我们老师叫我们实现一个链表的插入、删除及它打印出来
他给了一段代码 可我怎么也看不懂  望高手帮忙解决一下
插入操作已经给出来了 
目的:链表的删除 将我们输入的值打印出来
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
  struct node
  {int data;
   struct node *next;
  };
  typedef struct node NODE;
main()
{
  void insert(NODE *temph,int i,int x); /*插入结点的算法*/
  void list(NODE *temph); /*显示链表中所有结点的算法*/
  void delete(NODE *temph,int x); /*删除结点x的算法*/
  NODE *head,*p,*mp,*new; int i,c,x,t,w,flag=1;
  head=(NODE *)malloc(sizeof(NODE));
  head->next=NULL;
  p=head;
  while(1)
{ clrscr();
  scanf("%d",&t);
  if(t==0) break;
  else
   { new=(NODE *)malloc(sizeof(NODE));
     new->data=t;
     new->next=NULL;
     p->next=new;
     p=p->next;
   }
  }
  list(head);
  while(flag)
{
   printf("\n insert :put(1)");
   printf("\n delete :put(2)");
   printf("\n exit : put(3)");
   printf("\n Please input a numble:");
  scanf("%d",&c);
  switch(c)
  { case 1:printf("Please input i,x:");
         scanf("%d,%d",&i,&x);
         insert(head,i,x);
         break;
    case 2:printf("Please input x:");
         scanf("%d",&x);
         delete(head,x);
         break;
    case 3: flag=0;
    }
    printf("\nPress any key continue.....");
     getch();
    } }
    void insert(NODE *head,int i,int x)
    { NODE *mp,*new;
        mp=head;
           while(mp)
      {if (mp->data==i)  break;
      else mp=mp->next;
      }
     new=(NODE*)malloc(sizeof(NODE));
     new->data=x;
     new->next=mp->next;
      mp->next=new;
     list(head);
     }
[此贴子已经被作者于2007-6-5 17:47:32编辑过]



											
	    

	