首页 > 其他 > 详细

单链表的基本操作实例

时间:2015-10-24 17:04:14      阅读:194      评论:0      收藏:0      [点我收藏+]
#include<iostream.h>
#include <stdlib.h>
#include <stdio.h>

typedef struct LNode{
    int  data; 
    struct LNode  *next; 
}LNode,*Linklist; 

int InitList(Linklist&L){ 
    L = new LNode;
    if (!L) return 1;
    else L->next = 0;
    return 0;
}

int ListInsert(Linklist&L, int i, int e) {      // 在带头结点的单链线性表L的第i个元素之前插入元素e 
    Linklist p,s;
    p = L;    
    int j = 0;    
    while (p && j < i-1) {  // 寻找第i-1个结点    
         p = p->next;    
         ++j;  
    }  
    if (!p || j > i-1) return 1;     // i小于1或者大于表长  
    s = (Linklist)malloc(sizeof(LNode));  // 生成新结点 
    s->data = e;  s->next = p->next;      // 插入L中 
    p->next = s; 
    return 0;   
}

int ListDelete(Linklist&L, int i, int&e) {      // 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值 
    Linklist p,q;   
    p = L; 
    int j = 0;   
    while (p->next && j < i-1) {  // 寻找第i个结点,并令p指向其前趋    
        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 0; 
 } // ListDelete_L

int Traverse(Linklist L){
    Linklist p = L->next;
    while(p){
    cout<<p->data<<" ";
    p = p->next;
    }
    return 0;
}

void main(){  
    Linklist La;
    InitList(La);
    int a[6] = {1,4,8,3,6,0};
    for(int i=1;i<7;i++){
        ListInsert(La, i, a[i-1]);  //插入
    }
    cout<<"La:";
    Traverse(La);
    cout<<endl;

    int m;  //删除
    ListDelete(La, 3, m);
    cout<<"删除元素后La:";
    Traverse(La);
    cout<<"删除元素为:"<<m<<endl;

}
技术分享

 

 

 

单链表的基本操作实例

原文:http://www.cnblogs.com/123lele/p/4907099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!