目录
一、实验题目 ..................... 错误!未定义书签。
二、实验流程图 ................... 错误!未定义书签。
三、实验程序清单 ................. 错误!未定义书签。
四、实验验证数据 ................. 错误!未定义书签。
五、实验体会............................................ 错误!未定义书签。
实验一线性表的建立与遍历
一、实验题目
1、给定一个输入序列,建立顺序表,访问输出顺序表中各结点的内容。
2、给定一个输入序列,建立线性链表,访问输出线性链表中各结点的内容。
二、实验流程图
1、顺序表的建立流程图
图输入流程图图输出流程图
2、①链表头插法的建立及链表的输出
图链表输出图头插法建立链表
②尾插法建立
图尾插法建立
三、实验程序清单
1、/*顺序表的建立及遍历*/
#include <>
typedef struct{
int data[100];
int length;
}Seqlist;
void creat(Seqlist &L);
void show(Seqlist L);
int main()
{
Seqlist L;
=0;
creat(L);
show(L);
return 0;
}
void creat(Seqlist &L)
{
int a;
printf("请输入要创建的元素的个数:\t");
scanf("%d",&a);
for(int i=0;i<a;i++)
{
printf("请输入第%d个元素\t",i+1);
scanf("%d",&[i]);
++;
}
}
void show(Seqlist L)
{
int i;
printf("线性表中的元素为:\n");
for(i=0;i<;i++)
printf("%d\t",[i]);
printf("\n");
}
2、
①/*头插法链表的建立*/
#include <>
#include <>
typedef struct node
{
char data;
struct node *next;
}JD;
JD *CreateList_Front();
int main()
{
JD *head,*p;
head=CreateList_Front();
p = head;
while(p != NULL)
{
printf("%c ", p->data);
p = p->next;
}
printf("\n");
}
JD *CreateList_Front()
{JD *head, *p;
char ch;
head = NULL;
printf("依次输入字符数据(‘#’表示输入结束):\n");
ch = getchar();
while(ch != '#')
{
p = (JD*)malloc(sizeof(JD));
p->data = ch;
p->next = head;
head = p;
ch = getchar();
}
return head;
}
②/*链表尾插法建立及遍历*/
#include <>
#include <>
typedef struct link
{
char data;
struct link *next;
}linklist;
linklist *CreateList_End(); 用带头结点的尾插法创建单链表");
printf(" ");
printf("2.链表输出显示");
printf(" ");
printf("3.退出\n");
printf("做出选择:\n");
scanf("%d",&choice);
switch(choice)
{
//尾插法
case 1:
head = CreateList_End();
break;
//输出链表
case 2:
ShowLinklist(head);
break;
//退出程序
case 3:
return 0;
break;
default:
break;
}
}
return 1;
}
linklist *CreateList_End()
{
char ch;
linklist *head, *s, *r;
head = (linklist*)malloc(sizeof(linklist));
r=head;
printf("请依次输入字符数据('#'表示输入结束):\n");
ch = getchar();
while(ch != '#')
{
s = (linklist*)malloc(sizeof(linklist));
s->data = ch;
r->next=s;
r=s;
ch=getchar();
}
r->next = NULL;
return head;
}
void ShowLinklist(linklist *h)
{
linklist *s;
s = h;
while(s != NULL)
{
printf("%c ", s->data);
s = s->next;
}
printf("\n");
}
四、实验验证数据
1、顺序表的建立及输出结果如下:
图顺序输出2、链表头插法建立及遍历,结果如下:
图头插法
3、链表尾插法的建立及遍历,结果如下:
图尾插法
五、实验体会
通过这次实验的练习,虽然在编程的过程中出现的一些小的错误,例如变量未定义,但是在自己不断的修正下,结果不断完善。
通过这次实验让我更加明白一个顺序表怎么建立,先大体上估计一个数组的大小,自己来确定这个顺序表的长度,然后进行输出。
在链表实验中还做了头插法和尾插法建立及遍历链表,通过实验结果可以更加明白,插法建立链表输出结果是逆序的,而尾插法建立链表输出结果是正序。