//线性单链表#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;}

评论