数据结构学习笔记-03-线性表及其实现

数据结构学习笔记-03-线性表及其实现,第1张

概述本文章向大家介绍数据结构学习笔记-03-线性表及其实现,主要包括数据结构学习笔记-03-线性表及其实现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

线性表的顺序存储实现

typedef struct LNode *List;

struct LNode

{

ElementType Data[MAXSIZE];

int Last;

};

struct LNode L;

List Ptrl;

初始化:

List MakeEmpty()

{

List PtrL;

PtrL = (List )malloc(sizeof(struct LNode));

PtrL->Last = -1;

return PtrL;

}

查找指定元素:

int Find(ElementType X,List PtrL)

{

int i = 0;

while(i<=PtrL->Last && PtrL->Data[i]!=X)

i++;

if (i>PtrL->Last)

return -1;

else return i;

}

插入:

voID insert(ElementType X,int i,List PtrL)

{

int i;

if(PtrL->Last == MAXSIZE-1)

{

printf("表满");

return;

}

if (i<1||i>PtrL->Last+2)

{

printf("位置不合法");

return;

}

for (j=PtrL->Last;j>=i-1;j--)

PtrL->Data[j+1]=PtrL->Data[j];

PtrL->Data[i-1]=X;

PtrL->Last++;

return;

}

删除节点:

voID Delete(int i,List PtrL)

{

int j;

if (i<1||i>PtrL->Last+1)

{

printf("不存在第%d个元素",i);

return;

}

for (j=i;j<=PtrL->Last;j++)

PtrL->Data[j-1] = PtrL->Data[j];

PtrL->Last--;

return;

}

线性表的链式存储实现

typedef struct LNode *List;

struct LNode

{

ElementType Data;

List Next;

};

struct LNode L;

List PtrL;

求表长:

int Length(List PtrL)

{

List p = PtrL;

int j = 0;

while(p)

{

p=p->Next;

j++;

}

return j;

}

按序号查找:

List FindKth(int K,List PtrL)

{

List p = PtrL;

int i = 1;

while(p!=NulL&&i

{

p = p->Next;

i++;

}

if (i==K)

return p;

else return NulL;

}

按元素值查找:

List Find(ElementType X,List PtrL)

{

List p=PtrL;

while(p!=NulL && p->Data!=X)

p=p->Next;

return p;

}

插入节点:

List Insert(List PtrL,int k,ElementType X)//插入元素

{

List p,s;

if (k==1)

{

s=(List)malloc(sizeof(struct LNode));

s->Data=X;

s->Next=PtrL;

return s;

}

p=FindKth(k,PtrL)

if (p==NulL)

{

printf("参数k出错");

return NulL;

}

else

{

s=(List)malloc(sizeof(struct LNode));

s->Data=X;

s->Next=p->Next;

p->Next=s;

return PtrL;

}

}

删除节点:

List Delete(int k,List PtrL)//删除节点

{

List p,s;

if (k==1)

{

s=PtrL;

if (PtrL!=NulL)

PtrL=PtrL->next;

else

return NulL;

free(s);

return PtrL;

}

p=FindKth(k-1,List)

if (p==NulL)

{

printf("第%d个节点不存在",k-1);

return NulL;

}

if (p->Next==NulL)

{

printf("第%d个节点不存在",k);

return NulL;

}

else

{

s=p->Next;

p-Next=s->Next;

free(s);

return PtrL;

}

}

总结

以上是内存溢出为你收集整理的数据结构学习笔记-03-线性表及其实现全部内容,希望文章能够帮你解决数据结构学习笔记-03-线性表及其实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1264444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存