当前位置:文档之家› 数据结构实验答案(1)

数据结构实验答案(1)








1.
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define ElemType int
#defineMAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/
typedef struct
{ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/
int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
}SeqList;
#include "common.h"
#include "seqlist.h"
for(c=0;c<b;c++)
{printf("%d ",e->elem[c]);}
printf("\n");
return(OK);
}
void main()
{SeqList *l,*q;
int p,r;
int i,j,m;
l = (SeqList*)malloc(sizeof(SeqList));
#define FALSE 0
#define ElemType int
#defineMAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/
typedef struct
{ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/
int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
printf("学号姓名年龄\n");
while(flag)
{scanf("%d",&a);
if(a==-1)
flag=0;
else
{scanf("%s%d",b,&c);
s=(Node*)malloc(sizeof(Node));
s->num=a;
strcpy(s->name,b);
s->age=c;
for(i=0; i<=l->last; i++)
{printf("%d ",l->elem[i]);
}
printf("\n");
}
void px(SeqList *A,int j)
{int i,temp,k;
for(i=0;i<j;i++)
{for(k=0;k<j-1;k++)
{if(A->elem[i]<A->elem[k])
printf("十六进制:");
Conversion(iNum,j);
printf("\n转换完毕!\n");
}
void Conversion(int iNum,int i) //进栈
{struct Number *top=NULL,*NewP;
while(iNum!=0)
{
NewP=(struct Number *)malloc(sizeof(struct Number));
L=(Node * )malloc(sizeof(Node));
L->next=NULL;/*为头结点分配存储空间,建立空的单链表L*/
r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
/*循环输入表中元素值,将建立新结点s插入表尾*/
printf("输入学生的信 Nhomakorabea:\n");
if(top==NULL)
{NewP->next=NULL;
top=NewP;
L->next=p; /*将p结点头插入到单链表L中*/
p=q; /*p指向下一个要插入的结点*/
}
}
void main()
{LinkList l;
Node *p;
printf("请输入链表数据,以-1结束!\n");
l = CreateFromTail();
printf("输入的单链表为:\n");
p = l->next;
while(p!=NULL)
{printf("%d %s %d\n",p->num,p->name,p->age);
p=p->next;
}
ReverseList(l);
printf("逆置后的单链表为:\n");
p = l->next;
while(p!=NULL)
{printf("%d %s %d\n",p->num,p->name,p->age);
实验一线性表基本操作
实验地点
S-C1303
实验日期
2013年04月22日




1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。
2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。
3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成(an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄)
void px(SeqList *A,int j);
void main()
{SeqList *l;
int p,q,r;
int i;
l=(SeqList*)malloc(sizeof(SeqList));
printf("请输入线性表的长度:");
scanf("%d",&r);
l->last = r-1;
printf("请输入线性表的各元素值:\n");
for(i=0; i<=l->last; i++)
{
scanf("%d",&l->elem[i]);
}
px(l,i);
printf("请输入要插入的值:\n");
scanf("%d",&l->elem[i]);
i++;
px(l,i);
l->last++;
p=p->next;
}
}







1.实验结果:
实验分析:
我做了三次实验,分别插入数列前,中,后的数字,实验证明代码没有错误,能正常运行、排序、输出。
存在的问题:我不明白为什么我写的是降序排序,计算机运行后就是升序排序了。希望老师能帮我修改一下。
2.实验结果
实验分析:
我通过三次实验(正常删除、删除个数超出、删除位置不正确)证明代码的正确性。改代码可实现派讯,删除,读取删除的内容和输出的功能。
}SeqList;
#include "common.h"
#include "seqlist.h"
void px(SeqList *A,int j);
int DelList(SeqList *L,int i,SeqList *e,int j)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤st+1 */
3.实现链队列管理---输入一个整数,如果是奇数就入队,如果是偶数就让队头出队,直到输入0就结束,最后输出队列的所有元素。







(代码)
1.
#include<stdio.h>
#include<malloc.h>
#include<windows.h>
#define NULL 0
typedef struct Number
{for(k=0;k<j-1;k++)
{if(A->elem[i]<A->elem[k])
{temp=A->elem[i];
A->elem[i]=A->elem[k];
A->elem[k]=temp;
}}
}
printf("排序完成!");
}
3.#include <stdio.h>
#include <stdlib.h>
{temp=A->elem[i];
A->elem[i]=A->elem[k];
A->elem[k]=temp;
}}
}
}
2.
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
重庆文理学院软件工程学院
实验报告册
专业:_____软件工程___
班级:_____软件工程2班___
相关主题