《数据结构与算法》
综合实验报告
系    别:         
专    业:         
学生姓名:         
指导教师:         
2011年  11月  25日
实验目的
掌握线性表的建立、插入、删除算法;
掌握查算法;
掌握排序算法;
实验要求
使用C语言(环境任意)开发程序,能够对用户输入的任意一组数据,建立一个线性表,可以输出此线性表。并且能够对此线性表进行插入、删除、查、排序等操作。
程序流程
建表如下:
定义一个整型的数据类型data和next指针:
定义头指针和当前结点指针,申请连续空间将单个字节大小复制给头指针,把头指针赋值给当前节点指针:
若输入的数是0,则
若输入不为0,把输入的数赋值给已申请的新结点,把新结点赋给当前节点的next域,再把新结点赋值给当前结点,以此方法重复执行得到如下链表:
输出函数:
把头指针赋值给当前结点指针,当当前节点的next域不为空时输出当前节点所指向的数据,把当前结点的next域赋值给当前节点,否则输出链表为空
对此线性表进行插入、删除、查询、排序操作
把已申请的结点数据域指向所输入的数
再把插入w结点赋值头结点,是插入的位置,如果w=0则插入结点的next域赋值给头结点
否则如果w>表长,则输出超出范围
代码及运行结果(主要语句要求有注释)
#include"stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef 二叉树的遍历及应用实验报告struct linknode
{
  int data;
  struct linknode *next;
}node;
node *head;
node *creat()
  {
    node *currnode,*newnode;
    int x;
    head=(node*)malloc(sizeof(node));
    currnode=head;
    do{
      scanf("%d",&x);
    newnode=(node*)malloc(sizeof(node));
    newnode->data=x;
    currnode->next=newnode;
    currnode=newnode;
      }while(x!=NULL);
      head=head->next;
      currnode->next=NULL;
      return head;
};
int length()
{
  node *currnode;
  int i=0;
  currnode=head;
  while(currnode->data!=NULL)
  {
    currnode=currnode->next;
    i++;
  };
  return i;
};
void print()
{
  node *currnode;
  currnode=head;
  printf("链表如下....linklist");
  while(currnode->data!=NULL)
  {
    printf("%d-->",currnode->data);
    currnode=currnode->next;
  };
  printf("NULL\n");
  printf("链表长度为........linklist length%d\n",length());
};
void delete1()
{
  int x;
  node *delnode,*currnode;
  printf("输入要删除的数据......input delete data:");
  scanf("%d",&x);
  if(head->data==NULL) printf("此链表为空无法删除.....this linklist empty!\n");
  if(head->data==x)
  {
    delnode=head;
    head=head->next;
    free(delnode);
    if(head==NULL) printf("此链表为空.......this linklist enpty!");
  }
  else
  {
    currnode=head;
    delnode=currnode->next;
    while(delnode->data!=x&&delnode!=NULL)
    {
    currnode=currnode->next;
    delnode=currnode->next;
      };
      if(delnode==NULL)
    printf("无此数据......no this data!\n");
      else
      {
    currnode->next=delnode->next;
    free(delnode);
      };
  };
};
void find()
{
  node *currnode;
  int count=1,x;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。