一、实验目的:
1、复习C语言程序设计中的知识。
2、掌握线性表的链式存储结构的表示和实现方法。
3、掌握单链表基本操作的算法实现。
二、实验内容:
1.建立单链表。
2.在单链表上实现插入、删除和查找等操作。
三、实验要求:
编写实现单链表的基本算法(初始化、查找、插入、删除等)的函数,并在此基础上设计一个主程序完成如下功能:
⑴初始化字符型单链表H;
⑵采用尾插法建立单链表H,如(a,b,c,d,c);
⑶输出单链表H的长度;
⑷输出单链表H的第i个元素,如输出单链表H的第3个元素;
⑸输出给定元素的位置,如输出元素a的位置;
⑹在第i个元素前插入给定元素,如在第4个元素前插入元素f;
⑺删除单链表H的第i个元素,如删除单链表H的第3个元素。
⑻输出单链表
四、实验步骤:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
// 单链表结构类型的定义
typedef int elemtype; /结点的数据类型设为整形/
typedef struct node /定义单链表结点类型/
{
elemtype data;
/结点的数据域/
struct
node *next; /结点的指针域/
}LinkList; /单链表的类型名为LinkList/
//LinkList *head,p; / head 是指向单链表类型LinkList的指针变量/
//1 初始化单链表
LinkList *Init_LinkList()
{
LinkList
*head; //
head
= (LinkList*)malloc(sizeof(LinkList)); //生成头结点指针
if
(head == NULL) //如果申请空间失败,返回空指针
{
printf("初始化失败!\n");
return
0;
}
else
{
printf("初始化成功!\n");
return
head;
}
}
//2 用尾插法建立单链表
LinkList *Creat_LinkListR(LinkList
*head)
{
elemtype
ix;
LinkList *p, tail;
/ *head,*tail 分别为头指针和尾指针 */
head->next
= NULL; /置头结点指针域为空/
tail
= head;
printf(“请输入数据直到遇0终止:\n”);
scanf("%d",
&ix); //输入第一个数据
while
(ix != 0)
{
p
= (LinkList *)malloc(sizeof(LinkList));
if
(p == NULL)
{
printf("新结点申请空间失败,无法继续建立单链表!\n");
return
head;
}
p->data
= ix; /为新结点数据域赋值/
tail->next
= p;