完成下列算法填空,将两个有序递增的带表头结点的单链表合并为一个有序递增的单链表。 链表结点Node和链表SingleList结构体定义如下: typedef struct node { ElemType element; struct node *link; }Node; typedef struct headerlist { Node *head; int n; }HeaderList; void MergeList1(HeaderList *La,HeaderList *Lb,HeaderList *Lc) { //合并链表La和Lb,合并后的新表使用头指针Lc指向 Node *pa,*pb,*pc,*q; pa=La->head->link; pb=Lb->head->link; pc=Lc->head; while(pa && pb) { if(____________________) { pc->link=pa; pc=pa; pa=pa->link; La->n--; } else if(pa->element>pb->element) { pc->link=___________; pc=________; pb=_________; Lb->n--; } else { pc->link=pa; pc=pa; pa=_________; q=_________; free(pb); pb =q; } Lc->n++; } pc->link=pa?pa:pb; //插入剩余段 Lc->n+=pa?La->n:Lb->n; }
请完成算法填空,实现带表头结点的单链表形式实现的队列上的元素入队与出队操作,队列和元素结点结构体定义如下: typedef struct node { ElemType element; struct node* link; }Node; typedef struct queue { Node* front; //注意front指向表头结点,非头结点,请对视频中提供的代码进行修改 Node* rear; //指向尾结点 }Queue; void EnQueue(Queue *Q, ElemType x) { Node* p= (Node*)malloc(sizeof(Node)); ____________ = x; p->link = NULL; ____________=p; Q->rear=p; } void DeQueue(Queue *Q) { //若队列为空,直接返回 if(___________ ==NULL) return; Node *p=_____________; Q->front->link=___________; free(p); //若出队后,队列为空,则需重置rear if(______________==NULL) Q->rear=Q->front;//指向表头结点 }
以行优先存储对称矩阵的下三角元素,对称矩阵结构体定义如下: typedef int ElemType; typedef struct smatrix{ ElemType *elements; int m; //阶数 }SMatrix 请完成以下算法填空题: (1)查找运算 ElemType Find(SMatrix *dm, int i, int j) //查找[i][j] ElemType Find(SMatrix *dm, int i, int j) //m行n列 { int temp, k; if (i<0 || i>=_________ || j<0 || j>=___________) return ERROR; if(i <j) { temp="i;" ____________; j="temp;" } k="_____________;" return dm-> elements[k]; } (2)赋值运算void SetValue(SMatrix *dm, int i, int j, ElemType x) void SetValue(SMatrix *dm, int i, int j, ElemType x) //设置[i][j]=x { int temp, k; if(i <j){ temp="i;__________;" j="temp;" } k="____________;" dm-> elements[_________] = ___________; }
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!