1 / 20
文档名称:

数据结构实验.doc

格式:doc   大小:155KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验.doc

上传人:miao19720107 2021/3/17 文件大小:155 KB

下载得到文件列表

数据结构实验.doc

相关文档

文档介绍

文档介绍:实验一 线性表的实验
实验课程名:数据结构
专业班级: 数媒 学号: 9 姓名: 柯贤栋
实验时间: 2012年11月15日 实验地点: K4-206 指导教师: 祁文青
一、实验目的和要求
 1、掌握用Visual C++
2、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现
3、进一步掌握循环单链表的插入、删除、查找算法的实现
实验内容
注明:柯贤栋本次实验分配为1、5、6、7。
一:顺序表基本操作的实现
要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。
源代码:
# include < >
# include < >
typedef char DataType ;
typedef struct node{
DataType data; /*结点的数据域*/
struct node *next; /*结点的指针域*/
}ListNode;
void Init_List(ListNode **L)
{ (*L)=(ListNode *)malloc(sizeof(ListNode));/*产生头结点*/
(*L)->next=NULL;
}
int List_Length(ListNode *L )
{ int n=0;ListNode *p=L->next;
while(p!=NULL)
{ n++;
p=p->next;
}
return n;
}
ListNode* GetNode(ListNode *L,int i)
{ int j;
ListNode *p;
p=L;j=0; /*从头结点开始扫描*/
while(p->next&&j!=i) /*顺指针向后扫描,直到p->next为NULL或i=j为止*/
{ p=p->next;
j++;
}
if(i==j)
return p; /*找到了第i个结点*/
else
return NULL; /*当i<0或i>0时,找不到第i个结点*/
}
void InsertList(ListNode *L,DataType x,int i)
{
ListNode *p,*s;
p=GetNode(L,i-1); /*寻找第i-1个结点*/
if (p==NULL) /*i<1或i>n+1时插入位置i有错*/
{ printf("position error");
return ;
}
s=(ListNode *)malloc(sizeof(ListNode));
s->data=x;s->next=p->next;p->next=s;
}
void DeleteList(ListNode *L ,int i)
{
ListNode *p,*r;
p=GetNode(L,i-1); /*找到第i-1个结点*/
if (p==NULL||p->next==NULL) /*i<1或i>n时,删除位置错*/
{ printf("position error");
return ;
}
r=p->next; /*使r指向被删除的结点a*/
p->next=r->next; /*将ai从链上删除*/
free(r);
}
ListNode * CreatListF(void)/*使用头插法建立带头结点链表算法*/
{ char ch;
ListNode *head=(ListNode *)malloc(sizeof(ListNode)); /*生成头结点*/
ListNode *s; /*工作指针*/
head->next=NULL;
ch=getchar(); /*读入第1个字符*/
while(ch!='\n')
{ s=(ListNode *)malloc(sizeof(ListNode)); /*生成新结点*/
s->data=ch; /*将读入的数据放入新结点的数据域中*/
s->next=head->next;
head->next=s;
ch=getchar(); /*读入下一字符*/
}
r