最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数据结构实验报告1

来源:动视网 责编:小OO 时间:2025-09-23 23:47:19
文档

数据结构实验报告1

广州大学学生实验报告开课学院及实验室:计算机楼603B2015年3月5日学院数学与信息科学学院年级、专业、班信安141姓名黄俊强学号1415300017实验课程名称数据结构实验成绩实验项目名称算法设计指导老师钟育彬实验目的1理解算法的定义,算法特征与算法的描述方法;2掌握如何在C语言中利用顺序存储结构和非顺序存储结构实现简单算法;3熟悉抽象数据类型的表示和实现。实验原理数据结构主要包括三方面的内容:数据的逻辑结构、数据的存储结构和数据的运算及实现(即算法)。熟悉算法的描述与实现,对后续课程有着
推荐度:
导读广州大学学生实验报告开课学院及实验室:计算机楼603B2015年3月5日学院数学与信息科学学院年级、专业、班信安141姓名黄俊强学号1415300017实验课程名称数据结构实验成绩实验项目名称算法设计指导老师钟育彬实验目的1理解算法的定义,算法特征与算法的描述方法;2掌握如何在C语言中利用顺序存储结构和非顺序存储结构实现简单算法;3熟悉抽象数据类型的表示和实现。实验原理数据结构主要包括三方面的内容:数据的逻辑结构、数据的存储结构和数据的运算及实现(即算法)。熟悉算法的描述与实现,对后续课程有着
广州大学学生实验报告

开课学院及实验室:计算机楼603B                  2015年 3月  5 日

学院数学与信息科学学院年级、专业、班信安141

姓名黄俊强学号1415300017
实验课程名称数据结构实验

成绩
实验项目名称算法设计指导老师钟育彬
实验目的1 理解算法的定义,算法特征与算法的描述方法;

2掌握如何在C语言中利用顺序存储结构和非顺序存储结构实现简单算法;

3 熟悉抽象数据类型的表示和实现。

实验原理  数据结构主要包括三方面的内容:数据的逻辑结构、数据的存储结构和数据的运算及实现(即算法)。熟悉算法的描述与实现,对后续课程有着重要意义。

而抽象数据类型需借助固有数据类型来表示和实现,即利用高级程序设计语言中已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作,具体实现细节则依赖于所用语言的功能。

问题描述  将两个长度不超过10的有序整数集合A和B合并为一个有序整数集合C。请用数组(顺序存储结构)表示这两个集合,针对这种存储结构设计算法并编程实现。

实验内容

#include

#include

typedef struct node                //节点定义

{

  int data;

  struct node *next;

} node,*linklist;

linklist creat(linklist head)       //该函数用来创建链表

{

     node *r,*s;

     int a;

     r = (linklist)malloc(sizeof(node));

     head = r;

     scanf("%d",&a);

     while(a != 0)

     {

        s =(node*)malloc(sizeof(node));

        s->data=a;

r->next=s;

        r=s;

        printf("please input a data:");

        scanf("%d",&a);

     }

r->next=NULL;

     return head;

}

linklist length(linklist l)             // 返回L中数据元素个数

{

    int i=0;

    linklist p=l->next;    // p指向第一个结点

    while(p) 

     {

         i++;

         p=p->next;

    }

     return i;

}

linklist mergel(linklist A,linklist B)   //用于实现链表A,B的交叉组合

 {

     int m,n;

     node *p,*q,*s,*t;

     linklist C;

p=A->next;

q=B->next;

     m=length(A);

     n=length(B);

     C=A;

if(m     {

        p=B->next;

        q=A->next;

        C=B;

     }

     

     while(p&&q)

     {

s=p->next;

p->next=q;

       if(s)

       {

t=q->next;

q->next=s;

       }

       p=s;

       q=t;

     }

        return C;

}

 

linklist sort(linklist L)            //链表内容升序排列

{

  linklist p,q,min;

  int temp;

  p=L;

while( p=p->next )

  {

    q=min=p;

while(q=q->next){

if( q->datadata )

        min = q; 

 

 }

   if( min!=p )

   {

temp = p->data;

p->data = min->data;

min->data=temp;

  }

 } 

return L;

}

linklist Delete(linklist l,int index)       //删除链表指定位置元素   

{ linklist p,t;

  int cx=1;            //用于计数

  p=l;

  if(index  {

     

while(p&&(cx    {

       t=p;

p=p->next;

      cx++;

    }

t->next=p->next;

  } 

    else

      printf("input indext error");

return l;

}

linklist Delete_element(linklist l,int data)     //删除指定的元素

{  linklist p;

    p=l;

if(p->next)

   {

while(p->next->data!=data)

    {

p=p->next;

       

    }

   

p->next=p->next->next;

 

  }

   else 

       printf("don't faind the element");

   

   return l;

}

linklist display(linklist l)      //打印

{  linklist p;

    printf("new linklist :\\n");

        p = l->next;

            while(p)

             {

                printf("%d\\n",p->data);

                p= p->next;        

            }

return l;

main()

{

    linklist p,q,A,B,C,D;

    int indexs;

    int datas;

    char name;

    int cmd;

    printf("Creat linklist A:\\n");       //创建A链表,并打印

    printf("please input a data:");

    A = creat(A);

    

    

    printf("Creat linklist B:\\n");       //创建B链表,并打印

    printf("please input a data:");

    B = creat(B);

    

    C = mergel(A,B);                      //生成C链表 ,并打印

    printf("linklist C\\n");

p = C->next;

    while(p)

    {

printf("%d\\n",p->data);

p=p->next;

    }

    D=C;                                  //对C进行排序生成D

    sort(D);

    printf("linklist D:\\n");

q = D->next;

    while(q)

    {

printf("%d\\n",q->data);

q = q->next;

    }

    

   

    printf("\\nplease input 0 or 1 \\n"); 

      //用1和0判断是按位置删除还是直接删除元素

    scanf("%d",&cmd);

    

    if(cmd==0)                 //位置删除

    {  

        printf("please input linklist name\\n ");

        fflush(stdin);

        scanf("%c",&name);

        printf("\\nplease input index \\n");

        scanf("%d",&indexs);

        fflush(stdin);

        if(name=='A')

        {

                

            Delete(A,indexs);

            display(A);

        

        }

        else if(name=='B')

        {

            Delete(B,indexs);

            display(B);

        }

        else if(name=='C')

        {

            Delete(C,indexs);

            display(C);

        }

        else if(name=='D')

        {

    

        Delete(D,indexs);

            display(D);

        }

        else 

            printf("nameError");

    }

   

    else if(cmd==1)                         //元素删除

    {

           fflush(stdin);                  //清除缓冲 

        printf("please input linklist name\\n ");

        //fflush(stdin);

        scanf("%c",&name);

        printf("\\nplease input datas \\n");

        scanf("%d",&datas);

        if(name=='A')

        {

            Delete_element(A,datas);

                display(A);

        }

        else if(name=='B')

        {

            Delete_element(B,datas);

                display(B);

        }

        else if(name=='C')

        {

           Delete_element(C,datas);

               display(C);

        }

        else if(name=='D')

        {

            Delete_element(D,datas);

                 display(D);

        }

        else  

            printf("name2error");

    

    }

     else  

       

        printf("cmdError");

    

    printf("\\nOver\\n");

    getchar();

    return 0;

        

}

程序正常运行,并且可以实现将两个集合合并。

文档

数据结构实验报告1

广州大学学生实验报告开课学院及实验室:计算机楼603B2015年3月5日学院数学与信息科学学院年级、专业、班信安141姓名黄俊强学号1415300017实验课程名称数据结构实验成绩实验项目名称算法设计指导老师钟育彬实验目的1理解算法的定义,算法特征与算法的描述方法;2掌握如何在C语言中利用顺序存储结构和非顺序存储结构实现简单算法;3熟悉抽象数据类型的表示和实现。实验原理数据结构主要包括三方面的内容:数据的逻辑结构、数据的存储结构和数据的运算及实现(即算法)。熟悉算法的描述与实现,对后续课程有着
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top