数据结构线性表实验报告_数据结构实验线性表
数据结构线性表实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构实验线性表”。
实验报告
课程名:数据结构
实验名:线性表及其操作 姓名: 班级: 学号:
撰写时间:2014.09.24
一 实验目的与要求
1.掌握线性表的实现
2.掌握线性表的基本操作的实现
二 实验内容
• 分别完成线性表的顺序表示及链式表示
• 在两种表示上, 分别实现一些线性表的操作, 至少应该包括 – 在第i个位置插入一个元素 – 删除第i个元素 – 返回线性表长
– 返回第i个元素的值
三 实验结果与分析
#include #include //---------线性表链式表示-----------struct V//声明一个结构体类型struct V { int value;struct V * next;//定义结构体变量 };void PrintLink(struct V*p)//定义一个结构体指针 { while(p!=NULL)//只要指针指向的变量不为NULL;就会一直循环链表指向下一个结构体
{
printf(“%d, ”,(*p).value);
p=(*p).next;//指针指向下一个结构体
} printf(“n”);} void Link(){
struct V*head;head=(struct V*)malloc(sizeof(struct V));//开辟一个长度为size的内存
(*head).value=-100;//表头为-100(*head).next=NULL;printf(“------------线性表链式表示------------n”);
int i,n=10;struct V*p=head;printf(“10个数据:n”);for(i=0;i
(*p).next=(struct V*)malloc(sizeof(struct V));
p=(*p).next;
(*p).value=2*i;
(*p).next=NULL;} PrintLink(head);//调用PrintLink函数
printf(“删除第四个数据:n”);int k=4;p=head;for(i=1;i
p=(*p).next;} struct V*temp=(*p).next;//k表示插入和删除的位置
(*p).next=(*temp).next;free(temp);PrintLink(head);printf(“插入第十个数据:n”);
k=10;p=head;for(i=1;i
p=(*p).next;} temp=(*p).next;(*p).next=(struct V*)malloc(sizeof(struct V));(*(*p).next).value=-99;(*(*p).next).next=temp;PrintLink(head);}
//---------线性表顺序表示-----------void seq1(){ int i,n=10,k=4;int a[10];//---------输出数组元素------------printf(“-------------线性表顺序表示---------n”);for(i=0;i
a[i]=i;} printf(“数组元素为:n”);for(i=0;i
printf(“%3d”,a[i]);} printf(“n”);//--------插入一个数组元素---------int m=n+1,j=12;//插入元素12 int b[20];for(i=0;i
if(i
{
b[i]=a[i];
}
else if(i==k)
{b[i]=j;}
else
{b[i]=a[i-1];} } printf(“输出插入一个元素的数组:n”);for(i=0;i
{
if(i
{c[i]=a[i];}
else
{c[i]=a[i+1];} } printf(“输出删除一个元素的数组:n”);for(i=0;i
printf(“数组元素为:n”);for(i=1;i=k;i--){a[i+1]=a[i];} a[k]=-100;++a[0];for(i=0;ik;i++){a[i]=a[i+1];} a[k]=-1;a[0]=n;--a[0];for(i=0;i
} int main(int argc,char *argv[]){ seq1();seq2();Link();return 0;}
图1:实验结果截图
实验分析:已在程序中按规定格式标注。