数据结构(一)

原创 2015年11月19日 18:01:28
1.顺序表

#define initsize 100
#define increment 10
typedef struct
{ ElemType *elem;
  int length;
  int listsize;
}SqList;


/*初始化顺序表L*/
Status initlist(SqList &L)
{  L.elem=(ElemType *)malloc(initsize*sizeof(ElemType));
   if(!L.elem) exit(0);
   L.length=0;
   L.listsize=initsize;
   return OK;
}                   

/*建立顺序表L*/
void creat(SqList &L)
{ int i,len;
  printf("please input list length:");
  scanf("%d",&len);
  printf("please input list data:");
  L.length=len;
  for(i=0;i<L.length;i++)
      scanf("%d",&L.elem[i]);
 }


/*在L表中取出第i个位置上的数据元素赋给e*/
Status getelem(SqList L,int i,ElemType &e)
{   if((i<1)||(i>L.length)) return ERROR;
    e=L.elem[i-1];
    return OK;
}


/*在L表中第i个位置上插入数据元素e*/
Status listinsert(SqList &L,int i,ElemType e)
{  int j;
   ElemType *newbase;
   if(i<1||i>L.length+1) return ERROR;
   if(L.length>=L.listsize)
   {   newbase=(ElemType *)realloc(L.elem,(L.listsize+increment)*sizeof(ElemType));
       if(!newbase) exit(0);
       L.elem=newbase;
       L.listsize+=increment;
    }
    for(j=L.length-1;j>=i-1;j--)
       L.elem[j+1]=L.elem[j];
     L.elem[i-1]=e;
     ++L.length;
     return OK;
 }


/*在L表中删除第i个位置上的数据元素,并将删除的元素赋给e*/
Status listdelete(SqList &L,int i,ElemType &e)
{   int j;
    if((i<1)||(i>L.length)) return ERROR;
    e=L.elem[i-1];
    for(j=i;j<=L.length-1;++j)
        L.elem[j-1]=L.elem[j];
    --L.length;
    return OK;
}


/*打印L表中的所有元素*/
void output(SqList L)
{  
for(int i=0;i<L.length;i++){
  printf(i);//根据具体数据类型具体去写
}

///////////////////////////////////////////////////////////////////////////////////////////////////
2.链表

typedef struct node
{ ElemType data;
  struct node *next;
}Lnode,*Linklist;


/*初始化顺序表L*/
Status initlist(Linklist &L)
{  L=(Lnode *)malloc(sizeof(Lnode));
   if(!L) exit(0);
   L->next=NULL;
   return OK;
}

/*建立顺序表L*/
void creat(Linklist &L)
{ int i,len;
  Lnode *p,*q;
  printf("please input list length:");
  scanf("%d",&len);
  printf("please input list data:");
  q=L;
  for(i=1;i<=len;i++)
  {  p=(Lnode *)malloc(sizeof(Lnode)); 
     scanf("%d",&p->data);
     q->next=p;
q=p;
  }
  q->next=NULL;
 }
/*在L表中取出第i个位置上的数据元素赋给e*/
Status getelem(Linklist L,int i,ElemType &e)
{   int j=1;
    Lnode *p;
p=L->next;
while(p&&j<i)
{ p=p->next;
j++;
}
    if(!p||j>i)  return ERROR;
e=p->data;
return OK;
}
/*在L表中第i个位置上插入数据元素e*/
Status listinsert(Linklist &L,int i,ElemType e)
{  int j=0;
   Lnode *p,*s;
   p=L;
   while(p&&j<i-1)
{ p=p->next;
j++;
}
   if(!p||j>i)  return ERROR;
   s=(Lnode *)malloc(sizeof(Lnode));
   s->data=e;
   s->next =p->next ;
   p->next =s;
   return OK;


 }
/*在L表中删除第i个位置上的数据元素,并将删除的元素赋给e*/
Status listdelete(Linklist &L,int i,ElemType &e)
{  int j=0;
   Lnode *p,*s;
   p=L;
   while(p&&j<i-1)
{ p=p->next;
j++;
}
   if(!p||j>i)  return ERROR;
   s=p->next ;
   e=s->data;
   p->next =s->next ;
   free(s);
   return OK;
}
/*打印L表中的所有元素*/
void output(Linklist L)
{  
  while(L->next!=NULL){
printf(L->next.data);//根据具体数据类型具体去写
L=L->next;
   }
}
/*end*/

注:欢迎读者朋友支出代码的错误或可优化点,大家共同进步大笑
版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构:图论:欧拉回路!一笔画问题

从无向图中的一个结点出发走出一条道路,每条边恰好经过一次。这样的路线称为欧拉道路。 奇点的概念:一个点的度数为奇数的时候,这个点就称为:奇点。 无向图中结论: 不难发现,在欧拉道路中,除了起点跟...
  • u010470972
  • u010470972
  • 2014年06月09日 14:47
  • 1056

数据结构 图 Graph

基础:按边或弧有无方向,分为有向图和无向图。n个顶点的图,若不计顶点到自己的边, 则无向图最多有n(n-1)/2条边(计到自己的边的话是n(n+1)/2条边),有向图则是最多n(n-1)条边(计到自己...
  • dragonaxz
  • dragonaxz
  • 2016年11月23日 15:19
  • 510

数据结构看书笔记(一)--数据结构简介

关于数据结构的一些根本的术语的了解
  • lazyfennec
  • lazyfennec
  • 2016年10月18日 12:46
  • 206

【原创】一笔画问题(欧拉路)

一笔画问题(euler-circuit.cpp) 题目描述 对给定的一个无向图,判断能否一笔画出。若能,输出一笔画的先后顺序,否则输出“No Solution!” 所谓一笔画出,即每条边仅走一次,每个...
  • c20182030
  • c20182030
  • 2016年10月08日 13:37
  • 971

如果业界中不用高级算法和数据结构,那为什么还要学?

这个源自 Quora,题主还补充说: 我和我认识的人从未用过任何高级算法和数据结构,我们中的有些人已经在业界工作 20 年了。你是如何激励自己去学习高级算法和数据结构的呢?或许,...
  • andylauren
  • andylauren
  • 2016年06月15日 13:32
  • 1045

【数据结构与算法分析】第一章、第二章总结

昨天晚上7点在长沙出发坐11个小时的火车回家,第一次坐硬卧回家还买到了一张下铺票,到底要比硬座舒服了很多。上午休整了半天下午就这干活,虽然放假但是手中的work哪能说停下就停下呢?毕竟也是自己喜欢的w...
  • minkee
  • minkee
  • 2016年02月24日 00:53
  • 741

数据结构——简介

数据结构——简介 1、几个基本概念 数据:数据是指计算机接受的输入数据,比如:整型、浮点型等数值类型以及声音、图像、视频等非数值类型的数据数据元素:是组成数据有一定意义的基本单位,比如一个人的...
  • qq_29721419
  • qq_29721419
  • 2017年04月08日 10:08
  • 501

实验报告--数据结构实验一

一.实验目的 1.复习巩固VC编程环境的使用,以及C++模板设计。 2.回顾并掌握VC单文件结构程序设计过程。 3.回顾并掌握VC多文件工程设计过程 4.掌握VC程序调试过程。 5.回顾C+...
  • qq_27687759
  • qq_27687759
  • 2015年09月29日 12:35
  • 274

一笔画问题【数据结构-图论】

回家路上听到2个人在说:田字怎么一笔写成,并且笔划不重复。田我回家想了许久,觉得无论如何走正常的途径肯定是不行的,投机取巧脑筋急转弯的我不讨论。那么是否可以找到数学定理?其实就是欧拉七桥问题:18世纪...
  • 21aspnet
  • 21aspnet
  • 2012年11月28日 15:11
  • 11004

学数据结构,是不是一定要先学离散数学

【留言】   学数据结构之前是不是一定要学离散数学【答复】   你问了一个非常好的问题,不少初学计算机的同学该会产生这个疑问(大多数有疑问不提而已,这不是好习惯),更深层地,这里可能包含着我们的学...
  • sxhelijian
  • sxhelijian
  • 2016年01月02日 08:31
  • 9731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构(一)
举报原因:
原因补充:

(最多只允许输入30个字)