数据结构之链表
/* 作者:wtt561111 日期:2015/7/19 编译环境:vc6.0 Windows 64b */ #include "stdio.h" #include "stdlib.h" typedef struct Node * PNode; struct Node { int info; PNode link; }; typedef struct Node * LinkList; /* 创建一个空的链表 */ LinkList createNullList(void){ LinkList llist=(LinkList)malloc(sizeof (struct Node)); if(llist==NULL){ printf("out of space\n"); return NULL; } llist->link=NULL; return llist; } /***************************************************************/ /* 推断链表是否为空,为空返回1,否则返回0; */ int isNullList_link(LinkList llink){ if(llink->link==NULL){ return 1; } return 0; } /***************************************************************/ /* 返回数据为x的节点 */ PNode locate_link(LinkList llink,int x){//之前把逗号写成中文的,结果不识别int,导致兴许错误 PNode p; if(llink==NULL)return NULL; p=llink->link; while(p != NULL && p->info !=x)p=p->link; return p; } /***************************************************************/ /* 在p所指的节点前插入x。成功返回1,否则返回0 */ int insertPost_link(LinkList llist,PNode p,int x){//之前把逗号写成中文的,结果不识别int。导致兴许错误 PNode q=(PNode)malloc(sizeof(struct Node)); if(q==NULL){ printf("out of space"); return 0; }else{ q->info=x;q->link=p->link;p->link=q;return 1; } } /***************************************************************/ /* 删除值域为x的节点,成功返回1,否则返回0 */ int deleteV_link(LinkList llist,int x){//之前把逗号写成中文的,结果不识别int。导致兴许错误 PNode p,q; p=llist; if(p==NULL) return 0; while(p->link != NULL && p->link->info != x) p=p->link; if(p->link ==NULL){ printf("not exist!\n"); return 0; }else{ q=p->link; p->link=q->link; free(q); return 1; } } /***************************************************************/ /**********************************主函数***********************/ int main(){ LinkList llist_get=createNullList(); insertPost_link(llist_get,llist_get,222); insertPost_link(llist_get,llist_get,333); deleteV_link(llist_get,333); printf("%d",llist_get->link->info); // printf("%d\n",llist_get->link->info); // printf("%d\n",llist_get->link->link->info); return 0; }