level 6
/* 按键值查找结点函数,如果输入的键值不等于结点中的值,会弹错 */
#include "stdio.h"
#define node struct list
#define new (node *)malloc(sizeof(node))
node *newlist(int n); /* 建立链表函数 */
node *output(node *p); /* 输出链表 */
node *GET(node *head,int i); /* 查找序列 */
node *key(node *head,int i); /* 查找结点值 */
node *del(node *head,int i); /* 删除结点 */
node
{
int data;
node *next;
}
main()
{
node *p,*head;
int i,x,n;
printf("要输入几组数据?");
scanf("%d",&n);
head=newlist(n);
printf("数据如下:\n");
p=head;
output(p);
printf("\n要查找第几个结点?");
scanf("%d",&n);
p=GET(head,n);
if(p!=NULL) printf("结点数据%d\n",p->data);
else printf("数据不存在!\n");
printf("\n要查找哪个值?\n");
scanf("%d",&n);
p=key(head,n);
if(p) printf("%d\n",p->data);
else printf("数据不存在!\n");
printf("输入要从结点中删除的数据:");
scanf("%d",&n);
head=del(head,n);
output(head);
}
node *newlist(int n) /* 建立链表函数定义 */
{
int i;
node *head,*p,*q;
if(n<=0) head=NULL;
else{
head=new;
p=head;
2011年05月27日 05点05分