分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
从终端输入一组整数,以0作为结束标志,将这一簇整数存放在一个链表中(不包括0),打印出该链表中的值,然后删除链表中的第五个元素,打印出删除后的结果。
mian.c
#include "stdio.h"typedef int ElemType;typedef struct node{ ElemType data; /*数据域*/ struct node *next; /*指针域*/}LNode,*LinkList;LinkList GreatLinkList(int n){ LinkList p,r,list=NULL; ElemType e; int i; for(i=1;i<=n;i++){ scanf("%d",&e); p=(LinkList)malloc(sizeof(LNode)); p->data=e; p->next=NULL; if(!list) list=p; else r->next=p; r=p; } return list;}void insertList(LinkList *list,LinkList q,ElemType e){ LinkList p; p=( LinkList)malloc(sizeof(LNode)); p->data=e; if(!*list){ *list=p; p->next=NULL; } else{ p->next=q->next; q->next=p; } }void delLink(LinkList *list ,LinkList q){ LinkList r; if(q==list){ *list=q->next; free(q); } else{ for(r=*list;r->next!=q;r=r->next); if(r->next!=NULL){ r->next=q->next; free(q); } }}void destroyLinkList(LinkList *list){ LinkList p,q; p=*list; while(p){ q=p->next; free(p); p=q; } *list=NULL;} main(){ int e,i; LinkList l,q; q=l=GreatLinkList(1); /*创建一个链表结点,q和l指向该结点*/ scanf("%d",&e); while(e) /*循环地输入数据,同时插入新生成的结点*/ { insertList(&l,q,e) ; q=q->next; scanf("%d",&e); } q=l; printf("The content of the linklist\n"); while(q) /*输出链表中的内容*/ { printf("%d ",q->data); q=q->next; } q=l; printf("\nDelete the fifth element\n"); for(i=0;i<4;i++) /*将指针q指向链表第5个元素*/ { q=q->next; } delLink(&l,q); /*删除q所指的结点*/ q=l; while(q) /*打印出删除后的结果*/ { printf("%d ",q->data); q=q->next; } destroyLinkList(&l); /*释放掉该链表*/ getche();}