《数据结构与算法》
综合实验报告
系 别:
专 业:
学生姓名:
指导教师:
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小时内删除。
发表评论