我们老师叫我们实现一个链表的插入、删除及它打印出来
他给了一段代码 可我怎么也看不懂 望高手帮忙解决一下
插入操作已经给出来了
目的:链表的删除 将我们输入的值打印出来
#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编辑过]