您的位置:首页 > 理论基础 > 数据结构算法

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

2015-09-21 06:55 253 查看
声明:此为书中笔记,笔者只想把它贴出来,以后再慢慢整理。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: