数据结构程序

#include<stdio.h>
int main()
{
  int n,i=0;
  scanf("%d",&n);
  int num[100001]={0,0,};
  while(n-->0)
      scanf("%d",&num[i++]);
    if(i==1)
    {
      printf("%d",num[0]);
      return 0;
    }
  int *a=NULL,*a1=NULL;
  int l=0,l1=0;
  for(n=1;n<i;n++)
  {
      if(l==0) 
          a=&(num[n-1]);
      if(!a1)
          a1=a;
      if(num[n]>num[n-1])
          ++l;
      else
      {
          if(l1<l)
          {
              l1=l;
              a1=a;
          }
          l=0;
      }
  }
  if(l1<l)
  {
      l1=l;
      a1=a;
  }
  for(i=0;i<=l1;i++)
  {
      if(i)
          printf(" ");
      printf("%d",*(a1+i));
  }
  return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef int PP;//自己定义的
typedef int E;//自己定义的
 /*ElemType是数据结构的书上为了说明问题而用的一个词。它是element type(“元素的类型”)的简化体。 
 因为数据结构是讨论抽象的数据结构和算法的,一种结构中元素的类型不一定是整型、字符型、浮点型或者
 用户自定义类型,为了不重复说明,使用过程中用“elemtype”代表所有可能的数据类型,
 简单明了的概括了整体。在算法中,除特别说明外,规定ElemType的默认是int型。

elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型
为了使程序可读性强,并且便于修改,让elem代表多种的数据类型
也就是为int、char等等的数据类型,起了一个别名
在头文件中定义:typedef char elem;            抽象元素类型为char类型,这样定义之后,
下面的程序中elem所定义的元素就是char类型的了 
如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。*/
#define MAXSIZE 100001


typedef struct LNode//节点类型的描述
{
	E Data[MAXSIZE];//自己定义的
	PP Last;//自己定义的
    
}LNode;


typedef struct LNode *PtrToNode;
typedef PtrToNode List;
List ReadInput()
{
	int N,i;
	List L;
	L=(List)malloc(sizeof(struct LNode));
	L->Last=-1;
	scanf("%d",&N);
	L->Last=N-1;
	for(i=0;i<=L->Last;i++)
	{
		scanf("%d",&L->Data[i]);
	}
	return L;
}
void PrintList( List L )
{
	int i=0;
	printf("%d",L->Data[i]);
	for(i=1;i<=L->Last;i++)
	{
		printf(" %d",L->Data[i]);
	}

}
void find(List L)
{
	int i;
	int Maxlen=0,len=0;
	int head=0,Tmphead=0,Tmptail=0,tail=0;
	//判断是否递增
	while(Tmptail<L->Last)
	{
		while(L->Data[Tmptail]<L->Data[Tmptail+1])
		{
			Tmptail++;
		}
		len=Tmptail-Tmphead+1;
		{
			if(len>Maxlen)
			{
				Maxlen=len;
				head=Tmphead;
				tail=Tmptail;
			}
			else
			{
				Tmphead=Tmptail+1;
				Tmptail=Tmphead;
			}
		}
	}
	printf("%d",L->Data[head]);
	for(i=head+1;i<=tail;i++)
	{
		printf(" %d",L->Data[i]);
	}

}

int main()
{
	List L;
	int i;
	L=ReadInput();
	//PrintList(L);
	//printf("\n");
	find(L);

	system("pause");//system("PAUSE")  是暂停的意思,等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
	return 0;
}    
/* #include<stdio.h>
int main()
{
    int n,a[100000]={0},b[100000]={0},*q,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int *p,j,k=0,max=0;
   for(i=0;i<n;i++)//输入的数组,原样输出要用指针 
	{
    printf("%d",*p);
	p++;	
	}*/
    
//,,p++
  	
/*  for(i=0;i<n;i++)
    {
        while(a[i+1]>a[i])
        {
            k++;//计数,记录总共有几个是连续增大的 
            i++;
        }
         
        if(k>max)
        {
            max=k;
			//printf("%d",*p);
			//break; //记录下最大到多少号
			j=i;
        }
    }
    //printf("\n%d",max);
    if(max!=0)
    {
    	p=&a;
	//printf("\n%d",*(p+j));
	q=&b;
    while(*(p+j)>*(p+j-1))
    {
    	
    	//printf(" %d",*(p+j-1));
    	p--;
    
    	//max--;
	}
	printf("%d",*(p+j));
	*q=*(p+j);
	q++;
	while(*(p+j)<*(p+j+1))
	{
		printf(" %d",*(p+j+1));
		*q=*(p+j+1);
		p++;
		q++;
	}
	

	
	int y=0;printf("%d",b[y]);
	while(b[y])
	{	
		y++;
		printf(" %d",b[y]);
		
	}	
	}
	*/
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	//printf(" %d",*(p+j));
	
	/*
	
	q=&b;
	*/
	
	
	
	//printf(" %d",*p);/**/
   // printf("\n%d",*(p-1)); 
   /* printf("\n%d",*(p-max+1)); 
    p--;
    for(i=1;i<max;i++)
    {
        printf(" %d",*p);
        p--;
    }
    return 0;
}
*/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个文件里包含了数据结构的所有的程序的实现,都是本人亲自写出来并在vs下调通了,绝对没有问题,绝对可以通过老师的检查。这些程序都是本人在数据结构的课程设计的时候写的,主要的内容是 1、顺序表的建立插入删除查找 链表的建立插入删除查找 (包括顺序实现和链式实现) 2、栈的建立插入删除查找 队列的建立插入删除查找 (包括顺序实现和链式实现) 3、串——改进后的KMP 4、稀疏矩阵——三元组转置和乘法 5、二叉树遍历、哈夫曼树的建立 6、图的遍历、连通分量和强连通分量、关节点、最小生成树、拓扑排序、关键路径(prim和kruscal算法)、最短路径(有dijstra和floyd算法) 7、折半查找、二叉排序树、平衡二叉树、散列函数 8、插入排序、折半插入、冒泡排序、快速排序、简单选择、堆排序、二路归并排序 另外还有一些测试数据在里面,大家可以试试。 数据结构真的是很重要很重要,这么课要是没有学好,那就不算是计算机系的学生,而且数据结构很重要的就是要理解好那些经典的算法,在以后我们的实践中你会发现,基本上的问题都可以归结为那些经典问题,纳闷只要我们掌握了那些经典问题的经典算法,融会贯通的应用,拿在什么情况下都是游刃有余的。 希望对大家有所帮助,并且希望能够大家能支持支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值