数据结构c语言版结点概念,数据结构C语言版算法大全概念.doc

1) 插入操作

在顺序表L的第i (1<=L.length+1)个位置插入新元素e。如果i的输入不合法,则返回false,表示插入失败;否则,将顺序表的第i个元素以及其后的元素右移一个位置,腾出一个空位置插入新元素e,顺序表长度增加1,插入成功,返回true。

bool ListInsert(SqList &L, int i, ElemType e){

//本算法实现将元素e插入到顺序表L中第i个位置

if ( i<1 || i>L.length+1 )

return false; // 判断i的范围是否有效

if(L.length>=MaxSize)

return false; // 当前存储空间已满,不能插入

for (int j =L.length; j >=i; j--) // 将第i个位置及之后的元素后移

L.data[j]=L.data[j-l];

L.data[i-1]=e; //在位置i处放入e

L.length++; //线性表长度加1

return true;

}

复制纯文本新窗口

bool ListDelete(SqList &L,int i, int &e){

//本算法实现删除顺序表L中第i个位置的元素

if(i<1 || i>L.length)

return false; // 判断i的范围是否有效

e=L.data[i-1] ; // 将被删除的元素赋值给e

for (int j=i; j

L.data[j-1]=L.data[j];

L.length--; //线性表长度减1

return true;

}

int LocateElem(SqList L, ElemType e){

//本算法实现查找顺序表中值为e的元素,如果查找成功,返回元素位序,否则返回0

int i;

for(i=0;i

if(L.data[i]==e)

return i+1; // 下标为i的元素值等于e,返回其位号i+1

return 0; //退出循环,说明查找失败

}

typedef struct LNode{ //定义单链表结点类型

ElemType data; //数据域

struct LNode *next; //指针域

}LNode, *LinkList;

图2-4? 头插法建立单链表

头插法建立单链表的算法如下:

LinkList CreatList1(LinkList &L){

//从表尾到表头逆向建立单链表L,每次均在头结点之后插入元素

LNode *s;int x;

L=(LinkList)malloc(sizeof(LNode)); //创建头结点

L->next=NULL; //初始为空链表

scanf("%d", &x); //输入结点的值

while(x!=9999) { //输入 9999 表示结束

s=(LNode*)malloc(sizeof(LNode) ); //创建新结点

s->datax;

s->next=L->next; //重点(如果使用头插法的话)

L->next=s; //将新结点插入表中,L为头指针

scanf ("%d", &x);

} //while 结束

return L;

}

图2-5? 尾插法建立单链表

尾插法建立单链表的算法如下:

LinkList CreatList2(LinkList &L){

//从表头到表尾正向建立单链表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指向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值