数据结构-线性表链式表示

来源:互联网 发布:51单片机pwm控制电机 编辑:程序博客网 时间:2024/04/30 06:32

声明:此为书中笔记,笔者只想把它贴出来,以后再慢慢整理。

2015-09-19
author:tianhangyu8886@gmail.com
Linklist Creatlist2(Linklist &L){
    int x;  //设置元素类型为整型
    L=(Linklist)malloc(sizeof(LNode));
    LNode *s,*r=L;  //r为表尾指针
    scanf("%d",&x); //输入结点的值
    while(x!=9999){ //输入9999表示结束
        s=(LNode*)malloc(sizeof(LNode));    //创建新建结点
        s->data=x;
        r->next=s;
        r=s;    //r指向新的表尾结点
        scanf("%d",&x);
    }
    r->next=NULL;   //尾结点指针置空
    return L;
}




//按序号查找结点值
LNode *GetElem(Linklist L ,int i){
    int j=1;    //计算,初始化为1
    LNode *p=L->next;   //头结点指针域给p
    if(i==0)
        return L;   //若等于0,则返回头结点
    if(i<1)
        return NULL;    //若i无效,返回空
        while(p&&j<i){  //从第一个结点开始查找第i个结点
            p=p->next;
            j++;
        }
    return p;   //返回第i个结点的指针,如果i大于表长,p=NULL.
}    


//{4}按值查找结点
LNode *LocateElem(Linklist L,ElemType e){   //本算法查找单链表L(带头结点)中数据域
    //值等于e的结点指针,否则返回NULL
    LNode *p=L->next;
    while(p!=NULL&&p->data!=e)  //从第1个结点开始查找data域为e的结点
        p=p->next;  
    return p;   //找到后返回该结点的指针
}


//{5}插入结点操作
//先检查插入位置的合法性,然后找到带插入位置的前驱结点,即第i-1个结点,再在其后插入新结点
p=GetElem(L,i-1);
s->next=p->next;    //s的指针域指向p的后继结点
p->next=s;  //再把p的指针域指向s

0 0
原创粉丝点击