慕运维8079593
# include# includetypedef int datatype;typedef struct node{datatype data;struct node *next;}LinkList;LinkList *head,*p,*s;int i,j,x,count,length,choices;LinkList (*CreatList)()//创建单链表{int t;LinkList *r;head=(LinkList*)malloc(sizeof(LinkList));r=head;scanf("%d",&t);while(t!=-1){s=(LinkList*)malloc(sizeof(LinkList));s->data=t;r->next=s;r=s;scanf("%d",&t);}r->next=NULL;return head;}LinkList DispList(LinkList *head)//输出单链表{for(p=head->next;p;p=p->next)printf("%5d",p->data);printf("\n");}int ListLength(LinkList *head)//计算单链表长度并输出{length=0;p=head->next;while(p!=NULL){p=p->next;length++;}printf("%5d\n",length);}LinkList GetElem(LinkList *head,int i)//查找某一元素并输出{j=0;LinkList *p;p=head;scanf("%d",&i);while((p->next!=NULL)&&(jnext;j++;}if(i==j) printf("%5d\n",p->data);else printf("NULL\n");}LinkList LocateElem(LinkList *head,int x)//查找某一元素的位置并输出{p=head->next;count=1;scanf("%d",&x);while(p!=NULL){if(p->data!=x){p=p->next; count++;}else break;}if(count<=length) printf("%5d\n",count);else printf("error\n");}LinkList ListInsert(LinkList *head,int i,datatype x)//在某一位置插入某一元素{j=1;p=head->next;s=(LinkList*)malloc(sizeof(LinkList));scanf("%d%d",&i,&x);while(jnext;j++;}s->data=x;s->next=p->next;p->next=s;DispList(head);ListLength(head);}LinkList ListDelete(LinkList *head,int i)//删除某一位置的元素{j=1;p=head->next;scanf("%d",&i);while(jnext;j++;}s=p->next;p->next=s->next;free(s);DispList(head);ListLength(head);}int DestroyList(LinkList*head)//释放单链表{p=head->next;while(p->next!=NULL){s=p;p=p->next;free(s);}head=NULL;return 0;}int main(void){printf("0:创建单链表\n1:输出单链表\n2:计算单链表长度并输出\n3:查找某一元素并输出\n");printf("4:查找某一元素的位置并输出\n5:在某一位置插入某一元素\n6:删除某一位置的元素\n7:释放单链表\n");printf("说明:创建单链表以-1结束。\n该程序的释放有点问题,但可以当清空单链表来用。\n请选择:");while(scanf("%d",&choices)){switch(choices){case 0:CreatList();break;//创建单链表case 1:DispList(head);break;//输出单链表case 2:ListLength(head);break;//计算单链表长度并输出case 3:GetElem(head,i);break;//查找某一元素并输出case 4:LocateElem(head,x);break;//查找某一元素的位置并输出case 5:ListInsert(head,i,x);break;//在某一位置插入某一元素case 6:ListDelete(head,i);break;//删除某一位置的元素case 7:DestroyList(head);printf("该程序释放后不能选择输出");break;//释放单链表}printf("请选择:");}return 0;}