文档介绍:软件技术基础
实验讲课
——陈春梅 **********
实验一单链表操作
内容:编程实现单链表的建立、插入、删除和访
问算法,并输出结果。
建立单链表: “尾插法” P15
h=(node *)malloc(size of(node));
h->next=NULL;
pread(x);
while(x!=-1)
{ s =(node *)malloc(size of(node));
s->data=x;
if(h->next==NULL)
h->next=s;
else
p->next=s;
p=s;
pread(x); }
p->next=NULL;
^
h
x1
s
p
x2
s
单链表的访问
访问单链表的第 i(1≤i≤n)个数据元素,并将该元素值打印出来。
DataType access(ListNode *head,int i)
{
ListNode *p; int j;
p=head; j=0;
while(p->next!=NULL && j<i)
{ p=p->next; j++; }
if (p!=NULL && j==i)
return (p->data);
else
return (NULL);
}
实验二堆栈操作
内容:编程用堆栈实现各种进制间的相互转换,
并输出结果。要求有相应提示。
【例】将十进制数13转化为二进制数。
解答:按除2取余法,得到的余数依次是1、0、1、1,则十进制数转化为二进制数为1101。
分析:由于最先得到的余数是转化结果的最低位,最后得到的余数是转化结果的最高位,因此很容易用栈来解决。
13
2
6
3
0
1
2
2
2
1
0
1
1
void dec_to_bin(int N,int B)
{ InitStack(S);
while(N)
{ Push(S,N%B);
N=N/B;
}
while(!StackEmpty(S))
{ Pop(S,e);
printf(“%d”,e);
}
}
【例】将十进制数13转化为二进制数。
#define elemtype int
#define MAX 50
struct stack_type
{
elemtype stack[MAX];
int top;
};
堆栈结构体定义
实验三二叉树操作
内容:采用递归方法,先建立一颗二叉树,然后
实现其先序遍历、中序遍历和后序遍历。