一:实验目的
(1)掌握线性表的顺序存储结构
(2)熟练使用链式存储结构和实现线性表的操作
(3)能熟练掌握链式存储结构中算法的实现
二:实验内容
(1) 建立链式结构的线性表
(2) 实现链式表的插入、删除、查找、输出等基本操作
三:实验原理
线性表
四:程序清单、调试和测试结果及分析
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node{
datatype data;
struct node *next;
}Linked;
Linked Create_Linked(){ //创造节点并进行初始化
int inte=0;
Linked *head,*s,*r;
head=(Linked *)malloc(sizeof(Linked));
r=head;
while(inte!=666)
{
s=(Linked *)malloc(sizeof(Linked));
s->data=inte;
r->next=s;
r=s;
scanf("%d",&inte);
}
r->next=NULL;
return *head;
}
int insert_Linked(Linked *link,int i,datatype data){ //在链表的第i个位置处插入data数据
Linked *link1=(Linked *)malloc(sizeof(Linked));
link1->data=data;
Linked *link_t;
link_t=link;
int t=1;
while(link_t!=NULL&&t<i){
link_t=link_t->next;
++t;
}
if(!link_t)
{
printf("插入位置错误;");
return 0;
}
link1->next=link_t->next;
link_t->next=link1;
return 1;
}
int delete_linked(Linked *link,int i,datatype *temprary) //删除第i个位置的元素,并将它存储在temprary中
{
Linked *link2,*link_t;
link2=link;
int t=1;
while(link2!=NULL&&t<i){
link2=link2->next;
++t;
}
if(!link2){
printf("删除错误");
return 0;
}
link_t=link->next;
*temprary=link_t->data;
free(link_t);
link->next=link->next->next;
return 1;
}
int Search_Linked(Linked *link,datatype data){ //查找元素
Linked *link3;
link3=link;
while(link3!=NULL){
if(data==link->data){
printf("查找成功!");
return 1;
}
link3=link3->next;
}
return 0;
}
void Print_Linked(Linked *link)
{
Linked *link3;
link3=link;
//printf("链表中的数据为:");
while(link3!=NULL){
link3=link3->next;
if(link3!=NULL)
printf("%d\t",link3->data);
}
}
int main()
{
int a;
printf("初始化表,输入666时停止加入节点:\n");
Linked link=Create_Linked();
printf("在第五个位置插入数据7");
insert_Linked(&link,5,7);
printf("删除位置为4的元素\n");
delete_linked(&link,4,&a);
printf("查找数据为3的元素\n");
Search_Linked(&link,3);
printf("打印链表中的元素:\n");
Print_Linked(&link);
}