- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品文档
精品文档
PAGE
PAGE #欢迎下载
精品文档
精品文档
PAGE
PAGE #欢迎下载
《数据结构》程序填空复习题
说明:本文档中涉及到的算法并非本书的全部,有些可根据此处的情况自行看书和作业题, 黑色为综合练习上的题目,红色为我另增加的题,这些空的选择是根据我个人的经验来决 定的并不能完全代表中央电大的出卷老师,因此一定不能有肯定就考这些题目的想法。不 能放弃其他内容的复习,切记! !!
一、线性表
设线性表为(6,10,16,4),以下程序用说明结构变量的方法建立单向链表,并输出链 表中各结点中的数据。
#defi ne NULL 0
void mai n()
{NODE a,b,c,d,*head,*p;
data=6;
data=10;
data=16;
data=4; /*d 是尾结点 */
head= ( 1) ;
n ext=&b;
n ext=&c;
n ext=&d;
(2) ;_/* 以上结束建表过程*/
p=head; /*p为工作指针,准备输出链表*/
do
{printf( %d\n” _( 3) );
(4);
}while( _( 5) );
}
答案:
(1)&a
(2)d next=NULL
(3) p->data
(4) p=p->next
(5)p!=NULL
以下函数在head为头指针的具有头结点的单向链表中删除第 i个结点,
struct node
{ int data;
struct node *n ext;
};
typedef struct n ode NODE int delete(NODE *head,i nt i ) {
NODE *p,*q;
int j; q=head;
j=0;
while((q!=NULL)&&( ___⑴ ))
{
—(2) ;
j++;
}
if(q==NULL)
return(O);
TOC \o "1-5" \h \z p=—⑶ ;
(4) =p->n ext;
free(___⑸ );
return(1);
}
答案:
j<i-1
q=q_>next
q->next
q_>next
p
3.将新元素插入到线性表中的第i位,MAX是数组的个数,a[0]用以存放线性表长度,b存
3.将新元素插入到线性表中的第
放待插入的元素值,i
放待插入的元素值,i存放插入的位置,
n存放线性表长度
int i,j,b,n;
sca nf( %d%d%d&b, & i,&n); for(j=1;j<=n ;j++) scanf( %c” &a[j]);
a[0]=n;
for(j=n; (1) ;j-_-)
TOC \o "1-5" \h \z ;
;
;
for(j=1;j<=a[0];j++)
printf( %5d\n”a[j]);
}
答案:
j>=i
a[j+1]=a[j]
a[i]=b
a[0]=n+1
4.用头插法建立带头结点且有 n个结点的单向链表的算法
NODE *create( n)
{
NODE *head,*p,*q;
int i
p=(NODE *)malloc(sizeof(NODE));
TOC \o "1-5" \h \z ;
;
;
for(i=1;i<=n ;i++)
{
p=(NODE *)malloc(sizeof(NODE));
p->data=i;
if(i==1)
( 4);
else
{
( 5) ;
( 6) ;
}
}
return(head);
}
答案:
head=p
p->next=NULL
q=p
p->next=NULL
p_>next=q_>next
q_>next=p
栈
以下函数为链栈的进栈操作, x是要进栈的结点的数据域,top为栈顶指针
struct node
{ ElemType data;
struct node *n ext;
};
struct node *top ;
void Push(ElemType x)
{
struct node *p;
p=(struct node*)malloc( (1) );
p->data=x;
—⑵ ;
}
答案:
sizeof (struct no de)
p_>next=top
top=p
二、 队列
分别以下函数为链队列的入队操作, x为要入队的结点的数据域的值, front、rear
分别
是链队列的队头、队尾指针
struct node
{ ElemType data;
struct node *n ext;
};
struct node *front , *rear;
void lnQueue(ElemType x)
{
struct node *p;
TOC \o "
文档评论(0)