链表结构
struct node{ int data; node* next;}typedef node* linklist;1.链表的初始化
void initlist(linklist *l){ *l=(linklist)malloc(sizeof(struct(node))); if(!*l) return -1; *l->next=NULL;}2.销毁链表
void destroylist(linklist* l){ linklist q; while(*l) { q=*l->next; free(*l); *l=q; }}3.清空链表
void clearlist(linklist l){ linklist p,q; p=l->next; while(p) { q=p->next; free(p); p=q; } l->next=NULL;}4.获取链表某个位置的元素
int getele(linklist l, int i, int *e){ int j=0; linklist p=l->next; while(p&&j<i) { p=p->next; ++j; } if(!p) return -1; *e=p->data; return 1;}5.获取前驱节点
int getPRior(linklist l, int cure, int *pre){ linklist p,q; q=l->next; while(q->next) { p=q->next; if(p->data==cure) { *pre=q->data; return 1; } q=p; } return -1;}6.获取后继节点
int getnext(linklist l, int cure, int *next){ linklist p=l->next; while(p->next) { if(p->data==cure) { *next=p->next->data; return 1 } p=p->next; } return -1;}7.链表中插入节点
int listinsert(linklist l, int i, int ele){ int j=0; linklist p=l,s; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return -1; s=(linklist)malloc(sizeof(struct(node))); s->data=e; s->next=p->next; p->next=s; return 1;}8.链表的删除
int listdelete(linklist l, int i, int *e){ int j=0; linklist p=l,q; while(p->nextj<i-1) { p=p->next; ++j; } if(!p->next||j<i-1) return -1; q=p->next; p->next=q->next; *e=q->data; free(q); return 1;}新闻热点
疑难解答