正文

线性单链表2006-03-14 19:29:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/botao/11000.html

分享到:

//线性单链表#include<stdio.h>#include<stdlib.h> typedef int DataType;typedef struct Node{ DataType data; struct Node *next;}*linklist; //////////////////////////////////////linklist creatlinklist(void){//建立一个链表 linklist pl; pl=(linklist)malloc(sizeof(struct Node)); if(!pl) {  puts("can't malloc room");  exit(1); } pl->next=NULL; return pl;}//creatlinklist //////////////////////////////////////void destroylinklist(linklist plink){//销毁以plink为头节点的链表,并且释放空间。 linklist p; while(plink) {  p=plink;  plink=plink->next;  free(p); } plink=NULL;//为安全起见,置plink为 "空";}//destroylinklist //////////////////////////////////////void insertlinklist(linklist plink,DataType e,DataType pos){//向链表中插入一个e linklist pl,pt=plink; int j=0; while(pt&&j<pos-1) {  pt=pt->next;  j++; } if(!pt||j>pos-1) {  puts("can't insert!");  exit(1); } pl=(linklist)malloc(sizeof(struct Node)); if(!pl) {  puts("can't malloc room");  exit(1); } pl->data=e; pl->next=pt->next; pt->next=pl;}//insertlinklist DataType delelement(linklist plink,DataType pos){//将plink链表中pos位置的值删除并且返回. linklist p,q; DataType j=0,e; p=plink; while(p&&j<pos-1) {  p=p->next;  j++; } if(!p&&j>pos-1) {  puts("error!!!");  exit(1); } q=p->next; p->next=q->next; e=q->data; free(q); return e;}//delelement //////////////////////////////////////DataType getelement(linklist plink,DataType pos){//从plink的指定位置读入一个值;  linklist p; int j=1; p=plink->next; while(p&&j<pos) {  p=p->next;  j++; } if(!p||j>pos) {  puts("Error!can't find with the pos!");  exit(1); } return(p->data);}//getelement //////////////////////////////////////int main(void){ linklist p; int i=0; p=creatlinklist(); insertlinklist(p,9,1); insertlinklist(p,8,1); insertlinklist(p,7,1); insertlinklist(p,6,1); insertlinklist(p,5,1); insertlinklist(p,4,1); i=delelement(p,2); i=getelement(p,2); destroylinklist(p); return 0;}

阅读(2587) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册