搜索
您的当前位置:首页正文

链表的实验报告

来源:知库网


班级 学号 姓名 实验组别 试验日期 室温 报告日期 成绩 报告内容:(目的和要求、原理、步骤、数据、计算、小结等) 实验名称:链表的实现与应用 实验目的:

1. 掌握链表的概念。

2. 熟练掌握线性表的链式存储结构。 3. 熟练掌握线性表在链式存储结构上的运算。 实验环境(硬/软件要求): Windows 2000, Visual C++ 6.0 实验内容:

1. 编写算法,根据用户输入的字符数据用尾插入法创建一个带头结点的单链表,“#”作为

输入数据的结束符。

2. 编写算法,实现在带有头结点的单链表中按序号查找的函数。

假设单链表中包含6个数据元素,测试数据是:①查找第0个;②查找第一个;③查找第2个;④查找第6个;⑤查找第7个; 实验要求 1. 2. 3. 4.

完成链表存储结构的类型设计。 完成链表带头结点尾插入法函数。 完成按序号查找函数。

编写主函数完成实验内容的要求。 【C语言源程序】

#include #include typedef char datatype; typedef struct node {

datatype data; struct node *next; }

linklist;

linklist *createlist()/*尾插入法建立带头结点的单链表,返回表头指针*/ {

char ch;

linklist*head,*s,*r;

head=(linklist*)malloc(sizeof(linklist));/*生成头结点head*/ r=head;

printf(\"请输入字符产生的链表,以#结束\\n\");/*尾指针指向头结点*/ ch=getchar();

while(ch!='#') /*“#”为输入结束符*/ {

s=(linklist*)malloc(sizeof(linklist)); /*生成新结点*s*/ s->data=ch;

r->next=s; /*新结点插入表尾*/ r=s; /*尾指针r指向新的表尾*/

ch=getchar(); /*读入下一个结点的值*/ }

r->next=NULL;

return head; /*返回表头指针*/ } /*createlist*/

/*在带头结点的单链表head中查找第i个结点,若找到,则返回该结点的存储位置;否则返回NULL*/

linklist *get(linklist *head,int i) { int j;

linklist *p;

p=head;j=0; /*从头结点开始扫描*/ while((p->next!=NULL) && (jnext; /*扫描下一个结点*/ j++; /*已扫描结点计数器*/ }

if(i==j)return p; /*找到第i个结点*/ else return NULL; /*找不到,i<=0或i>n*/ } /*GET*/ void main() {

linklist *head,*r; int num;

head=createlist();

printf(\"链表信息为:\"); r=head->next; while(r) { printf(\"%c\ r=r->next; }

printf(\"\\n\");

printf(\"请输入要查询的序号:\\n\"); scanf(\"%d\r=get(head,num);

if(r==NULL)printf(\"没有查到\\n\"); printf(\"查到的结果为:%c\\n\ }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top