码迷,mamicode.com
首页 > 其他好文 > 详细

单链表的插入和删除

时间:2018-10-02 18:03:49      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:delete   node   style   define   code   ret   str   typedef   tde   

 1 #define OKO 1
 2 #define ERROR 0
 3 typedef struct Lnode{
 4     ElemType data;//数据域 
 5     struct Lnode *next;    //指针域 
 6 }Lnode,*Linklist;
 7 Lnode *LocateElem_L(Linklist L,Elemtype e){
 8     //在链表中查找值为e的数据元素
 9     Lnode *p;
10     p=L->next;
11     while(p&&p->data!=e)
12         p=p->next;
13     return p;//返回数据元素的地址 
14 }
15 //按值查找 返回数据所在的位置
16 int LocateElem_L(Linklist L,Elemtype e){
17     p=L->next;
18     j=1;
19     while(p&&p->data!=e){
20         p=p->next;
21         j++;
22     }
23     if(p) return j;
24     else  return 0; 
25 } 
26 //在第i个结点前插入值为e的新节点
27 Status ListInsert_L(Linklist L,int i,Elemtyoe e){
28     p=L;j=0;
29     while(p&&j<i-1){    //寻找第i-1个元素 
30         p=p->next;
31         ++j;
32     }
33     if(!p||j>i-1) return ERROR;//插入位置非法
34     s=new Lnode;s->data=e;//s=(Linklist)malloc(sizeof(Lnode));
35     s->next=p->next;
36     p->next=s;
37     return OK;    
38 }
39 //删除第I个结点
40 Status ListDelete(Linklist L,int i){
41     p=L;j=0;
42     while(p&&j<i-1){    //寻找第i-1个元素 
43         p=p->next;
44         ++j;
45     }
46     if(!(p->next)||j>i-1)    return ERROR;//删除位置不合理 
47     q=p->next;//临时保存被删除的结点 
48     p->next=q->next;//改变删除结点前驱结点的指针域 
49     delete q;//释放删除结点的空间 
50     return OK;    
51 } 

 

单链表的插入和删除

标签:delete   node   style   define   code   ret   str   typedef   tde   

原文地址:https://www.cnblogs.com/suqf/p/9736901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!