班级 学号 姓名 实验组别 试验日期 室温 报告日期 成绩 报告内容:(目的和要求、原理、步骤、数据、计算、小结等) 实验名称:链表的实现与应用 实验目的:
1. 掌握链表的概念。
2. 熟练掌握线性表的链式存储结构。 3. 熟练掌握线性表在链式存储结构上的运算。 实验环境(硬/软件要求): Windows 2000, Visual C++ 6.0 实验内容:
1. 编写算法,根据用户输入的字符数据用尾插入法创建一个带头结点的单链表,“#”作为
输入数据的结束符。
2. 编写算法,实现在带有头结点的单链表中按序号查找的函数。
假设单链表中包含6个数据元素,测试数据是:①查找第0个;②查找第一个;③查找第2个;④查找第6个;⑤查找第7个; 实验要求 1. 2. 3. 4.
完成链表存储结构的类型设计。 完成链表带头结点尾插入法函数。 完成按序号查找函数。
编写主函数完成实验内容的要求。 【C语言源程序】
#include 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\ } 因篇幅问题不能全部显示,请点此查看更多更全内容