数据结构实验二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
洛阳理工学院实验报告
系部计算机系班级学号姓名
课程名称数据结构实验日期
实验名称链表的基本操作成绩
实验目的:
(1)掌握线性表的链式存储结构的特点;
(2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。
实验条件:计算机一台,vc++6.0
实验内容与算法思想:
内容:
建立一有序的链表,实现下列操作:
1.把元素x插入表中并保持链表的有序性;
2.查找值为x的元素,若找到将其删除;
3.输出表中各元素的值。
算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求
运行结果:
附:源程序:
#include
#include
#define OK 1
#define ERROR 0
typedef char ElemType;
typedef struct Node
{
ElemType data;
struct Node* next;
}Node,*LinkList;
void init_linklist(LinkList *l)
{
*l=(LinkList)malloc(sizeof(Node));
(*l)->next=NULL;
}
void CreateFromTail(LinkList L)
{ Node *r, *s;
char c;
int flag =1;
r=L;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}
}
Node *Locate( LinkList L,ElemType key) {
int k;
Node *p;
k=1;
p=L->next;
while (p!=NULL)
{
if (p->data!=key)
{p=p->next; k++;}
else
break;
}
printf("查询的元素的位置为:");
printf("%d\n",k-1);
return p;
}
void InsList(LinkList L,int e)
LinkList p=L->next,q=L,s;
if(p->next==NULL)
{
printf("这是一个空链表\n");
}
else
{
while(p&&(p->data<=e))
{
q=p;
p=p->next;
}
if(p&&(p->data>=e))
{
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=p;
q->next=s;
}
else
{
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=NULL;
q->next=s;
}
}
int DelList(LinkList L,ElemType key)
{
Node *p,*pt;
p=L->next;
pt=p->next;
if(p->data==key)
{
L->next=pt;
free(p);
}
else while(pt!=NULL)
{
if(pt->data!=key)
{
pt=pt->next;
p=p->next;
}
else
{
p->next=pt->next;
free(pt);
break;
}
}
if(pt==NULL)printf("无该元素\n");
else printf("该元素已删除,删除后的排序为:\n");
return 1; }
void output(LinkList L)
Node *p;
p=L->next;
while(p!=NULL)
{
printf("%2c",p->data);
p=p->next;
}
}
void main()
{
LinkList L;
ElemType m,n,a;
init_linklist(&L);
printf("请输入您要录入的元素以$结束:\n"); CreateFromTail(L);
output(L);
printf("\n");
printf("请输入您要查询的元素:\n"); getchar();
n=getchar();
Locate(L,n);
printf("请输入您要插入的元素:\n"); getchar();
m=getchar();
InsList(L, m);
output(L);
printf("\n");