链表实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/* Add your own codes. */
}
/*Delete the eleme nt I */
int ListDelete(LinkList *L,int i,ET *e)
{
/* Add your own codes. */
}
int In sert(Li nkList *L) {
int i,flag;
int i;
Lin kList p,q;
ET str[20],c;
p=(L in kList)malloc(sizeof(LNode));
p-> next=NULL;
*L = q = p;
prin tf("Please in put the data:");
for (i=n ;i>0;i__) {
p=(L in kList)malloc(sizeof(LNode));
int j=1;
Lin kList p;
p=L->n ext;
while(p&&j<i){
p=p->n ext;
++j;
}
if(!p||j>i) return TRUE;
*e=p_>data;
return FALSE;
}
/*ln sert a eleme nt after I*/
int ListInsert(LinkList *L,int i,ET e) {
}
/*Find the eleme nt's positi on. */
int LocateElem(L in kList L,ET e) {
int i=0;
Lin kList p;
p = L_>n ext;
while (p) {
i++;
if (p->data == e) retur n i;
}
return 0;
ET data;
prin tf("Please in put the positi on: ”);scan f("%d",&i);
prin tf("Please in put the data:");
data = getche(); /*sca nf("%c", &data);*/
flag = ListI nsert(L,i,data);
}Baidu Nhomakorabea
/*Add the Lb after the La. */
《数据结构》实验报告二
系别:嵌入式系统工程系
学号:1116040031
日期:2012年4月9日_
、上机实验的问题和要求:
单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查
找、插入与删除。具体实现要求:
1.从键盘输入10个字符,产生不带表头的单链表,并输入结点值。
2.从键盘输入1个字符,在单链表中查找该结点的位置。若找到,则显示“找到了”;否
#defi ne List」ni t_Size10
#defi ne ListI ncreme nt2
typedef char ET;
typedef ET * Ep;
typedef int Status;
typedef struct LNode{
ET data;
struct LNode *n ext;
贝叽则显示“找不到”。
3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插
入在对应位置上,输出单链表所有结点值,观察输出结果。
4.从键盘输入1个整数,表示欲删除结点的位置, 输出单链表所有结点值, 观察输出结果。
5.将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有
}LNode, *Li nkList;
/*Lin kList La,Lb,Lc;*/
#i nclude "stdio.h"
#i nclude "alloc.h"
/*Display the linklist's elements. */
void prin tlk(Li nkList L) {
Lin kList p;
(包括程序的结构,数据结构,输入/输出设计,符号名说明等)
创建一个空的单链表,实现对单链表的查找,插入,删除的功能
三、源程序及注释:
#defi ne OK1
#defi ne ERROR0
#defi ne INFEASIBLE-1
#defi ne OVERFLOW-2
#defi ne TRUE1
#defi ne FALSE0
c = getche(); /*sca nf("%c",&c);*/
prin tf("\n\n");
p->data = c;
p_>next = q_>n ext;
q_>next = p;
}
}
/*Init the linklist. */
void Ini t(Li nkList *L) {
int n;
结点值,观察输出结果。
6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。
7.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元
素,而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出 单链表A和单链表B的所有结点值,观察输出结果。
、程序设计的基本思想,原理和算法描述:
return flag;
}
Status Delete(L in kList *L) {
int i,flag;
ET e;
prin tf("Please in put the nu mber:"); scan f("%d",&i);
flag = ListDelete(L,i, &e);
printf("Deleted element is %c\n",e); return flag;
p=L->n ext;
while (p) {
prin tf("%c -> ",p->data);
p = p_>n ext;
}
prin tf("NULL\n”);
}
/*Creat lin klist from head no de. */
void CreatList( Lin kList *L,i nt n){
prin tf("Please in put the nu mber of the node:"); scan f("%d",&n);
CreatList(L, n);
}
/* Get the value of eleme nt I; */
int GetElem(LinkList L,int i,ET *e) {
}
/*Delete the eleme nt I */
int ListDelete(LinkList *L,int i,ET *e)
{
/* Add your own codes. */
}
int In sert(Li nkList *L) {
int i,flag;
int i;
Lin kList p,q;
ET str[20],c;
p=(L in kList)malloc(sizeof(LNode));
p-> next=NULL;
*L = q = p;
prin tf("Please in put the data:");
for (i=n ;i>0;i__) {
p=(L in kList)malloc(sizeof(LNode));
int j=1;
Lin kList p;
p=L->n ext;
while(p&&j<i){
p=p->n ext;
++j;
}
if(!p||j>i) return TRUE;
*e=p_>data;
return FALSE;
}
/*ln sert a eleme nt after I*/
int ListInsert(LinkList *L,int i,ET e) {
}
/*Find the eleme nt's positi on. */
int LocateElem(L in kList L,ET e) {
int i=0;
Lin kList p;
p = L_>n ext;
while (p) {
i++;
if (p->data == e) retur n i;
}
return 0;
ET data;
prin tf("Please in put the positi on: ”);scan f("%d",&i);
prin tf("Please in put the data:");
data = getche(); /*sca nf("%c", &data);*/
flag = ListI nsert(L,i,data);
}Baidu Nhomakorabea
/*Add the Lb after the La. */
《数据结构》实验报告二
系别:嵌入式系统工程系
学号:1116040031
日期:2012年4月9日_
、上机实验的问题和要求:
单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查
找、插入与删除。具体实现要求:
1.从键盘输入10个字符,产生不带表头的单链表,并输入结点值。
2.从键盘输入1个字符,在单链表中查找该结点的位置。若找到,则显示“找到了”;否
#defi ne List」ni t_Size10
#defi ne ListI ncreme nt2
typedef char ET;
typedef ET * Ep;
typedef int Status;
typedef struct LNode{
ET data;
struct LNode *n ext;
贝叽则显示“找不到”。
3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插
入在对应位置上,输出单链表所有结点值,观察输出结果。
4.从键盘输入1个整数,表示欲删除结点的位置, 输出单链表所有结点值, 观察输出结果。
5.将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有
}LNode, *Li nkList;
/*Lin kList La,Lb,Lc;*/
#i nclude "stdio.h"
#i nclude "alloc.h"
/*Display the linklist's elements. */
void prin tlk(Li nkList L) {
Lin kList p;
(包括程序的结构,数据结构,输入/输出设计,符号名说明等)
创建一个空的单链表,实现对单链表的查找,插入,删除的功能
三、源程序及注释:
#defi ne OK1
#defi ne ERROR0
#defi ne INFEASIBLE-1
#defi ne OVERFLOW-2
#defi ne TRUE1
#defi ne FALSE0
c = getche(); /*sca nf("%c",&c);*/
prin tf("\n\n");
p->data = c;
p_>next = q_>n ext;
q_>next = p;
}
}
/*Init the linklist. */
void Ini t(Li nkList *L) {
int n;
结点值,观察输出结果。
6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。
7.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元
素,而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出 单链表A和单链表B的所有结点值,观察输出结果。
、程序设计的基本思想,原理和算法描述:
return flag;
}
Status Delete(L in kList *L) {
int i,flag;
ET e;
prin tf("Please in put the nu mber:"); scan f("%d",&i);
flag = ListDelete(L,i, &e);
printf("Deleted element is %c\n",e); return flag;
p=L->n ext;
while (p) {
prin tf("%c -> ",p->data);
p = p_>n ext;
}
prin tf("NULL\n”);
}
/*Creat lin klist from head no de. */
void CreatList( Lin kList *L,i nt n){
prin tf("Please in put the nu mber of the node:"); scan f("%d",&n);
CreatList(L, n);
}
/* Get the value of eleme nt I; */
int GetElem(LinkList L,int i,ET *e) {