当前位置:首页 > 计算机软件技术基础实验报告
实验一 线性表的基本操作
据结构,以及它们之间的关系。
一、实验目的与基本要求
1.掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。
3.掌握线性表的基本操作:插入、删除、查找以及线性表的合并等运算。 4.掌握运用C语言上机调试线性表的基本方法。
二、实验条件
1.硬件:一台微机
2.软件:操作系统和C语言系统
三、实验方法
确定存储结构后,上机调试实现线性表的基本运算。
四、实验内容
1.试编写在无头结点的单链表上实现线性表基本运算LOCATE(L,X),INSERT(L,X,1)和DELETE(L,1)的算法。
2.假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。
3.将一个线性表中的值就地逆置。
4.在线性表的顺序存储结构的第一个位置上插入一个元素。 (注意区分链表和顺序表)
实验代码:
#include\#include\
struct node //定义结构体 {
1
int d;
struct node *next; };
struct node *head1,*head2,*p,*q;
void pre(struct node *head) //打印数据 {
printf(\链表中的数据为:\\n\); p=head; while(p!=NULL) {
printf(\,p->d); q=p;p=p->next; }
printf(\); }
struct node *creat() //建立链表 {struct node *head;
int x;
printf(\输入你要储存的数据:\\n\); head=NULL; q=NULL; scanf(\,&x); while(x>0) {
p=(struct node *)malloc(sizeof(struct node)); p->d=x; p->next=NULL;
if(head==NULL) head=p; else q->next=p; q=p;
scanf(\,&x); getchar(); }
pre(head); return (head); }
void locate(struct node *head,int x) //查找链表中的数据 {
int u=1; p=head;
2
while (p->next!= NULL) {if (p->d==x) break; else
{ p=p->next;u++;} }
if(p->d!= x) printf(\无此结点\);
printf(\在链表中的位置为:\); printf(\,u); }
void insert(struct node *head,int x, int i) //插入数据 { p = head;int j=1;
q=(struct node *)malloc(sizeof(struct node)); q->d=x; if(i==1)
{ q->next=head; head=q; } else {
while((j
void delet(struct node *head,int i) //删除数据 { p=head;int j=1;
if(i<0) printf(\无此位置\); if(i==1)
{q=head; head=head->next; free(q); } else {
while((j
p->next=q->next; }
free(q);}
3
void hebing(struct node *x,struct node *y) //合并两个链表 { p=x; q=y;
while(p->next!=NULL) p=p->next; p->next=q; pre(x); }
void paixu(struct node *head) //对链表中的数据进行排序 {int m,n,i=1,t; p=head;
while(p->next!=NULL) {p=p->next;i++;} p=head;
for(n=i;n>1;n--) {p=head;
for(m=1;m q=p->next; if(p->d p=p->next; } } } void caozuo(struct node *head) //操作界面 { int m,n;char t; printf(\输入你要的操作:,查找 2,插入 3,删除\\n\); scanf(\,&t); switch(t) { case '1': {printf(\输入你要查找的元素的值:\\n\); locate(head,m);}break; {printf(\输入你要插入的元素的值和位置:\\n\); scanf(\,&m); case '2': 4
共分享92篇相关文档