鏈表結構
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;}新聞熱點
疑難解答