一个数据结构的题目,很急

来源:百度知道 编辑:UC知道 时间:2024/06/20 16:42:26
4、 实验方法
第一步:定义单链表的存储结构。
第二步:编写单链表操作的具体函数定义。
第三步:使用定义的单链表并调用单链表的一些操作,实现具体运算。
具体函数的定义有:
1) insert(L,i,x)在单链表的第i个元素之前插入一个新元素x.
2) deletet(L,i) 删除单链表的第i个元素。
3) listprint(L) 输出单链表。
注意:每完成一个步骤,必须及时输出链表元素,以便于观察操作结果。
#include "stdio.h"
#include "malloc.h" /*包含动态分配内存函数*/
#define NULL 0
#define TRUE 1
#define FALSE 0

typedef int elemtype;
typedef struct node /*链表结点类型定义*/
{elemtype data; /*结点数据域*/
struct node *next; /*结点的指针域*/
}linklist;

linklist *creatlist() /*创建链表函数—以按下任意建开始创建,以输入字符‘?’{char ch; 表示结束标志*/
int x;
linklist *head,*r,*p;
p=(linklist*)malloc(sizeof(linklist));
head=p;
p->next=NULL;
r=p;
ch=getchar();
while(ch!='?')
{scanf("%d",&x);
p=(linklist*)malloc(sizeof(linklist));
p->data=x;
p->next=NULL;
r->ne

由先序序列可知结点A是根结点,然后在选项中找A,A结点前面的结点表示都是在根A的左侧的,A后面的结点是出现在A右侧的。再分析一下各个选项:

B项:C在A的前面说明C是A右孩子的一个结点,再根据先序序列可分析,既然C都在A左边,B也应在左边,所以B应该排在A前面
C项:D在A前,同样BC也应在A前面
D项同理,F是在A前面,BCDE都应排在A前面。

只有A正确。这种判断方法对做选择题很有用,但是你可能还是没有完全理解,如果不理解就自己画画图,分析一下所有的可能性,会对你加深理解有帮助

调试以后的程序:

#include "stdio.h"
#include "malloc.h" /*包含动态分配内存函数*/
#define NULL 0
#define TRUE 1
#define FALSE 0

typedef int elemtype;
typedef struct node /*链表结点类型定义*/
{elemtype data; /*结点数据域*/
struct node *next; /*结点的指针域*/
}linklist;

linklist *creatlist() /*创建链表函数-以按下任意建开始创建,以输入字符'?'表示结束标志*/
{ int x;char ch;
linklist *head,*r,*p;
p=(linklist*)malloc(sizeof(linklist));
head=p;
p->next=NULL;
r=p;
ch=getchar();
do
{scanf("%d",&x);
p=(linklist*)malloc(sizeof(linklist));
p->data=x;
p->ne