赞
踩
1、单向链表按位置修改
- //按位置修改
- int updata_pos(linklist *L,int pos,datatype new_e)
- {
- if(NULL==L||empty(L)||pos<1||pos>L->len)
- {
- printf("修改失败\n");
- return -1;
- }
- linklist *p=find_node(L,pos);
- p->data=new_e;
- printf("修改成功\n");
- return 0;
- }
2、单向链表的反转——非递归方式
- //链表反转
- void list_reverse(linklist *L)
- {
- if(NULL==L||empty(L))
- {
- printf("反转失败\n");
- return ;
- }
- //方案一:头插反转
- /* linklist *p=L->next;
- linklist *q=p->next;
- for(int i=0;i<L->len-1;i++)
- {
- p->next=q->next;
- q->next=L->next;
- L->next=q;
- q=p->next;
- }
- //方案二:
- linklist *q=L->next;
- linklist *p=find_node(L,L->len);
- for(int i=0;i<L->len-1;i++)
- {
- L->next=q->next;
- q->next=p->next;
- p->next=q;
- q=L->next;
- }*/
- }

3、双向链表尾插
- //尾插
- int tail_add(doublelink *D,datatype e)
- {
- if(NULL==D)
- {
- printf("插入失败\n");
- return -1;
- }
- doublelink *q=D;
- while(q->next!=NULL)
- {
- q=q->next;
- }
- doublelink *p=node_buy(e);
- p->prio=q;
- p->next=q->next;
- q->next=p;
- D->len++;
- return 0;
-
- }

双向链表头删
- //头删
- int head_del(doublelink *D)
- {
- if(NULL==D||empty(D))
- {
- printf("删除失败\n");
- return -1;
- }
- doublelink *q=D->next;
- q->next->prio=D;
- D->next=q->next;
- free(q);
- D->len--;
- q=NULL;
- }
双向链表按值修改
- //按值修改
- int mod_value(doublelink *D,datatype old_e,datatype new_e)
- {
- if(NULL==D||empty(D))
- {
- printf("修改失败\n");
- return -1;
- }
- doublelink *q=D->next;
- for(int i=0;i<D->len;i++)
- {
- if(q->data==old_e)
- {
- q->data=new_e;
- }
- q=q->next;
- }
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。