文档介绍:数据构造实验报告
专业班级:
指导教师:余腊生
姓名:
学号:
实验一单链表的根本操作的实现
一、实验目的
掌握单链表的根本操作:建立、插入、删除、查找等运算。
二、实验仪器
安装VC++的PC机。
三、实验原理
利用线性表的特性以及其链式存储构造特点对线性表进展相关操作。
四、实验容
程序中演示了单链表的创立、插入、删除和查找。
程序如下:
#include<>
#include<>
#include<>
#include<>
typedef struct node
{
int data;
struct node *next;
} NODE;
/******************************************/
NODE *Create()
{
NODE *p,*head;
int x;
head=(NODE *)malloc(sizeof(NODE));
head->next=NULL;
printf("Input data,-1 to End!\n");
scanf("%d",&x);
while(x!=-1)
{
p=(NODE *)malloc(sizeof(NODE));
p->data=x;
p->next=head->next;
head->next=p;
scanf("%d",&x);
}
return(head);
}
/******************************************/
void Output(NODE *head)
{
NODE *p;
p=head;
printf("Begin to dump the LinkList...\n");
while(p->next!=NULL){
printf("->%d",p->next->data);
p=p->next;
}
printf("\nThe LinkList ended!\n");
}
/******************************************/
int Listlen(NODE *head){
int i=0;
NODE *p=head;
while(p->next!=NULL){
i++;
p=p->next;
}
return(i);
}
/******************************************/
int Get(NODE *head,int i){
int j=0;
NODE *p=head;
while(p->next&&j<i){
j++;
p=p->next;
}
if(!p->next||j>i) return(0);
else return(p->data);
}
/******************************************/
void Del(NODE *head,int i){
NODE *p=head;
int j=0;
while(p->next&&j<i-1){
j++;
p=p->next;
}
if(!p->next||j>i-1) printf("the position is wrong\n");
else
p->next=p->next->next;
}
/******************************************/
void Ins(NODE *head,int i,int e)
{
NODE *p=head,*q;
int j=0;
while(p->next&&j<i-1)
{
j++;
p=p->next;
}
if(!p->next&&j>i-1) printf("Wrong position\n" );
else
{
q=(NODE *)malloc(sizeof(NODE));
q->data=e;
q->next=p->next;
p->next=q;
}
}
/******************************************/
main(){
NODE *head;
int length;
int i,element;
system("CLS");
head=Create();
Output(head);
length=Listlen(head);