数据结构程序

数据结构程序,第1张

你照下面的这个 去写。下面的这个是顺序表的基本 *** 作,链表和这个差不多。

#include"1.h"

void main()

{

char a[5]={'a','b','c','d','e'}

int n=5 

char f='f',b='a',e

SqList sq

InitList(sq)                  //初始化表

CreateList(sq,a,n)            //传入数据

DispList(sq)          //输出表

printf("sq.length=%d\n",ListLength(sq))        //输出表长

if(ListEmpty(sq))             //判断是否为空表

printf("sq是空表\n")

else

printf("sq不是空表\n")

printf("a在第%d位\n",LocateElem(sq,b))       //按元素值查找

ListInsElem(sq,f,4)       //在第4个位置上插入f元素

DispList(sq)           //输出表

printf("\n")

DelElem(sq,3,e)              //删除第三个元素

DispList(sq)          //输出表

}

这是头文件

1.h

#include<stdio.h>

const MaxSize=100

typedef struct SqList

{

char elem[MaxSize]

int length

}SqList,*PSqList

SqList sq

void InitList(SqList &sq)           //初始化线性表

{

sq.length=0

}

void CreateList(SqList &sq,char a[],int n)        //建立表

{

int i

for(i=0i<ni++)

sq.elem[i]=a[i]

sq.length=n

}

int ListLength(SqList sq)          //求表长

{

return(sq.length)

}

char GetElem(SqList sq,int i)          //求第i个元素

{

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

return 0

return sq.elem[i-1]

}

int LocateElem(SqList sq,char x)       //按元素值查找

{

int i=0

while(i<sq.length&&sq.elem[i]!=x)

i++

if(i>sq.length)

return 0

else return i+1

}

int ListInsElem(SqList &sq,char x,int i)        //插入元素在第i个位置

{

int j

if(i<1||i>sq.length+1)return 0

for(j=sq.lengthj>=ij--)

sq.elem[j]=sq.elem[j-1]

sq.elem[i-1]=x

sq.length++

return 1

}

int DelElem(SqList &sq,int i,char &e)           //删除第i个元素

{

int j

if (i<1||i>sq.length)return 0

e=sq.elem[i]

for(j=ij<sq.lengthj++)

sq.elem[j-1]=sq.elem[j]

sq.length--

return 1

}

int ListEmpty(SqList &sq)             //判断表是否为空

{

return(sq.length==0)

}

void DispList(SqList sq)             //输出表

{

int i

if(ListEmpty(sq))return

for(i=0i<sq.lengthi++)

printf("%c\t",sq.elem[i])

}

#include

"stdio.h"

#include

"malloc.h"

#define

null

0

struct

node

/*定义结构体*/

{int

data

struct

node

*next

}

struct

node

*head

struct

node

*p

struct

node

*s

void

creat()

/*创建单链表*/

{int

ch

head=(struct

node

*)malloc(sizeof(struct

node))

head->next=null

p=head

printf("请输入数据:

")

scanf("%d",&ch)

while(ch!=-1)

{s=(struct

node

*)malloc(sizeof(struct

node))

s->data=ch

s->next=null

p->next=s

p=s

printf("请输入数据:

")

scanf("%d",&ch)

}

}

void

outline()

/*输出单链表*/

{p=head->next

while(p!=null)

{printf("%d

",p->data)

p=p->next

}

printf("\n")

}

int

locate(int

x)

/*按值查找*/

{p=head->next

while((p!=null)&&(p->data!=x))

p=p->next

if(p==null)

return

0

else

return

(p->data)

}

main()

/*主函数*/

{int

a=0

creat()

outline()

printf("请输入你要找的数:\n")

scanf("%d",&a)

printf("你要找的数的下标是:

%d\n",locate(a))

printf("结点个数是:

%d\n",countnode())

}

有一个定理楼主听说过吗,程序=数据结构+算法

数据结构就是告诉你数据是一和形式存储的,集合,线性表,树,还是图或网。

你要学好数据结构,才知道遇到什么问题用什么方法解决,才能编出好的程序。

下面是官方的说法:

-------------------------------------------------------------------------------------------------------------

选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。

一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。


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

原文地址: http://outofmemory.cn/yw/11490538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存