last=8;
在L2表的存储结构体变量中,计算前:
data[0]=2,data[1]=4,data[2]=6,data[3]=8 last=3
待完成的算法如下:
void MergeList(SequenList *L1,Sequenlist *L2)
{/*算法进入时:L1指向第一个线性表的结构体变量
L2指向第二个线性表的结构体变量
算法退出后:L1指向第一个线性表的结构体变量,其内容为合并后的表。
L2指向第二个线性表的结构体变量,其内容未变。
*/
int i,j; /*分别表示第一个表及第二个表的当前位置指示器*/ int k; /*循环控制变量*/
int n1,n2; /*分别用于存放表L1及表L2的长度*/ DataType x; /*存放从表L2中读出的数据元素*/ n1=L1->last+1; n2=L2->last+1; i=L1->last+1; j=0;
for(k=0;k< ;k++) {
x= ; L1->data[i]=x; i++; j++; }
=n1+n2-1; return; }
开始 算法流程图:
n1<--表1的长度
n2<--表2的长度
i=表1的最后元素的下一空位置
j=表2的第一个元素位置
k=0
n k y x<--表2的data[j] 表1的data[i]<--x 退出 i<--i+1 j<--j+1 k<--k+1 3. 阅读下面的程序,绘制出主函数main( )的程序流程图,并说明本程序实现的功能。 #define maxsize 30 #define NULL -1 typedef char datatype; typedef struct stack { datatype elements[maxsize]; int top; } S; void IniStack(S *s) { s->top=-1; return; 表1的last<--n1+n2-1 } int Push(S *s,datatype ch) { if(s->top==maxsize-1) { printf(\return NULL; } else { s->top++; s->elements[s->top]=ch; return(1); } } int Pop(S *s) { if(s->top<0) { printf(\return NULL; } else { s->top--; return(s->top+1); } } main() { char ch1; S *s; int f1=f2=1; s=malloc(sizeof(S)); IniStack(s); scanf(\while(ch1!='$') { if(ch1=='(') f1=Push(s,ch1); if(ch1==')') f2=Pop(s); scanf(\} if(s->top==-1&&f1!=-1&&f2!=-1) printf(\else printf(\getch(); } 4. 阅读下面的算法程序,绘制出算法流程图,并说明本算法程序实现的功能。 #define NULL 0 typedef int datatype; typedef struct node { datatype data; struct node *next; } linklist; INSERT(linklist *L, datatype x) { linklist *p,*q, *s; s=(linklist *)malloc(sizeof(linklist)); s->data=x; p=L; q=L->next; while((q->data q->next=s; s->next=NULL; } else { p->next=s; s->next=q; } } 5. 下面的自定义类型SeqQueue表示循环队列的一种顺序存储结构实现方法,(1)请将相 关的入队和出队运算(操作)函数填写完整;(2)写出测试程序的执行结果;(3)给程序加分析注释。 /*----文件myqueue.h的内容如下----*/ #define MaxLength 1024 typedef int datatype; typedef struct sequeue{ datatype data[MaxLength]; int front,rear; }SeqQueue; void SETNULLQS(SeqQueue *p) { if(p==NULL) return; else { p->front=MaxLength-1; p->rear=MaxLength-1; } return; } int ENQUEUEQS(SeqQueue *p, datatype x) { int tail; if(p->front== (p->rear+1) ){ printf(“\\n队已经满啦!\\n”); return (0); }
相关推荐: