//2020年湖南对口计算机35题。下面程序中定义了三个函数,其功能分别是添加链表结点,显示链表结点与删除链表结点。 //如果添加的链表结点数据为“11,22,33,44,55”,则显示链表为“11->22->33->44->55->End”。如果删除数据为33的结点, //则显示链表为 “11->22->44->55->End”。请补充程序。 #include <stdio.h> #include <stdlib.h> struct Node{ int data; struct Node *next; }; typedef struct Node List; List *AppNode(List *head);//添加结点 void DisNode(List *head);//显示结点 List *DelNode(List *head,int nodeData);//删除结点 int main() { int i=0; List *head=NULL; for(i=0;i<5;i++) head=AppNode(head); DisNode(head); DelNode(head,33);//删除数据为33的结点 DisNode(head); return 0; } List *AppNode(List *head) { List *p=NULL; List *pr=head; int data; p=(List *)malloc(sizeof(List)); if(p==NULL){ printf("No enough memory!"); exit(0); } if(head==NULL) head=p; else{ while(pr->next!=NULL) pr=pr->next; pr->next=p; } pr=p; printf("input node data:"); scanf("%d",&data); pr->data=data; pr->next=NULL; return head; } void DisNode(List *head) { List *p=head; while(p!=NULL) { printf("%d-> ",p->data); p=p->next; } printf("End! "); } List *DelNode(List *head,int nodeData){ List *p=head,*pr=head; if(head==NULL){ printf("No Linked Table! "); return(head); } while(nodeData!=p->data&&p->next!=NULL){ pr=p; p=p->next; } if(p->data==nodeData){ if(p==head) head=p->next; else pr->next=p->next; free(p); }else printf("The Node has not found!"); return head; }