文档介绍:精选数据结构实验报告顺序表和链表
实 验 报 告
课程名称 数据结构
实验工程 实验一 线性表的生成与操作
题目一 顺序表和链表的创立与根本操作
系 ULL;
return 0;
}
单链表的根本操作
#include<>
#include<>
#define ERROR 0
#define OK 1
typedef int status;
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
} LNode,*LinkList;
void Build(LinkList L)//建立一个带头结点的单链表
{
int n;
LinkList p,q;
p=L;
printf("请输入n:\n");
scanf("%d",&n);
printf("请输入n个数据元素:\n");
while(n--)
{
q=(LinkList)malloc(sizeof(LNode));
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q;
}
}
void Print(LinkList L)//计算单链表的长度,然后输出单链表
{
int num=0;
LinkList p;
p=L->next;
while(p)
{
num++;
printf("%d ",p->data);
p=p->next;
}
printf("\n长度为%d\n",num);
}
void Tips()
{
printf("按数字键选择相应操作\n");
printf("<1> 输出单链表及其长度:\n");
printf("<2> 删除值为x的结点:\n");
printf("<3> 在第n个位置插入值X:\n");
printf("<4> 查找值为X的位置n:\n");
printf("<0> 退出:\n");
}
void Delete(LinkList L,int x)//删除值为x的结点
{
LinkList p,q;
p=L;
while( p->next &&p->next->data!=x)
p=p->next;
if(p->next)
{
q=p->next;
p->next=q->next;
free(q);
printf("删除成功!!\n\n");
Print(L);
}
else
printf("链表中没有%d\n\n",x);
}
void Insert(LinkList L,LinkList p,ElemType e)//在第n个位置插入值X
{
LinkList s;
int i=1;
s=L;
while(i<e)
{s=s->next;i++;}
p->next=s->nex