《数据结构》实训报告
实验一线性表
1.实验要求
1.1掌握数据结构中线性表的基本概念。
1.2熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及
合并并运算在顺序存储结构上的实验。
1.3熟练掌握链表的各种操作与应用。
2.实验内容
2.1编写一个函数,从一个给定的顺序表A中删除元素值在x到y之间的所有
元素,要求以较高效率来实现。
2.2试写一个算法,在无头结点的动态单链表上实现线性表插入操作
2.3设计一个统计选票的算法,输出每个候选人的得票结果。
3.实验代码
2、1代码:
#include
typedef int elemtype;
#define maxsize 10
int del(int A[],int n,elemtype x,elemtype y)
{
int i=0,k=0;
while(i {if(A[i]>=x&&A[i]<=y) k++; else A[i-k]=A[i]; i++; } return(n-k); } void main() { int i,j; int a[maxsize]; printf("输入%d个数:\n",maxsize); for(i=0;i scanf("%d,",&a[i]); j=del(a,maxsize,1,3); printf("输出删除后剩下的数:\n"); for(i=0;i printf("%d "\n,a[i]); } 2、2代码: INSERT(L,i,b)。 void Insert(Linklist &L,int i,elemtype x) { if(!L) { L=(Linklist)malloc(sizeof(Lnode)); (*L)、data=x;(*L)、next=NULL; } else { if(i==1) { s=(Linklist)malloc(sizeof(Lnode)); s->data=x;s->next=L;L=s; } else { p=L;j=1; while(p&&j {j++;p=p->next;} if(p||j>i-1) return error; s=(Linklist)malloc(sizeof(Lnode)); s->data=x;s->next=p->next;p->next=s; } } } 2、3代码: typedef int elemtype typedef struct linknode { elemtype data; struct linknode *next; }nodetype; nodetype *create() { elemtype d; nodetype h=NULL,*s,*t; int i=1; printf("建立单链表:\n"); while(1) { printf("输入第%d个结点数据域",i); scanf("%d",&d); if(d==0)break; if(i==1) { h=(nodetype *)malloc(sizeof(nodetype)); h->data=d;h->next=NULL;t=h; } else { s=(nodetype *)malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s; } i++; } return h; } void sat(nodetype *h,int a[]) { nodetype *p=h; while(p!=NULL) { a[p->data]++; p=p->next; } } void main() { int a[N+1],i; for(i=0;i a[i]=0; nodetype *head; head=create(); sat(head,a); printf("候选人:"); for(i=1;i<=N;i++) printf("%3d",i); printf("\n得票数\n"); for(i=1;i<=N;i++) printf("%3d",a[i]); printf("\n"); } 4.实验小结 线性表就是最简单的、最常用的一种数据结构,就是实现其她数据结构的基础。 实验二栈与队列 1.实验要求 1.1了解栈与队列的特性,以便灵活运用。 1.2熟练掌握栈与有关队列的各种操作与应用。 2.实验内容 2.1设一个算术表达式包括圆括号,方括号与花括号三种括号,编写一个算法 判断其中的括号就是否匹配。 3.实验代码 2、1代码: #include #include #include #define NULL 0 typedef struct list { char str; struct list *next; }list; void push(char,list *); int pop(char、list *); void deal(char *str); main(void) { char str[20];