本帖最后由 我是鑫海晕 于 2010-12-28 14:48 编辑
1、 已知两个按元素值有序的线性表A和B以线性链表存储结构表示,编程实现:利用原有存储空间,将A和B有序归并成一个按元素值有序的线性表。
1、 编程实现:链队列和循环队列的出队和入队操作。
2、 已知二叉树采用二叉链表存储结构表示,编程实现:求二叉树的结点总数、叶子结点个数、单分支结点个数、双分支结点个数和二叉树的深度。
#include<stdlib.h>
#include<stdio.h>
typedef int ElemType;
typedef struct LNode{ /*线性表的单链表存储结构*/
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList &L,int n){
/*逆位序输入n个元素的值,建立带头结点的单链线性表L*/
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL; /*先建立一个带头结点的单链表*/
int i;
LNode *p;
for( i=n;i>0;--i){
p=(LinkList)malloc(sizeof(LNode)); /*生成新结点*/
scanf("%d",&p->data); /*输入元素值*/
p->next=L->next;L->next=p; /*插入带表头*/
}
}//CreateList_L
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
/*已知单链线性表La和Lb的元素按值非递减排列*/
/*归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列*/
LNode *pa,*pb,*pc;
pa=La->next;pb=Lb->next;
Lc=pc=La; /*用La的头结点作为Lc的头结点*/
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;pc=pa;pa=pa->next;
}
else{pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb; /*插入剩余段*/
free(Lb); /*释放Lb的头结点*/
}//MergeList_L
int main(){
CreateList_L(&La,2);
CreateList_L(&Lb,2);
MergeList_L(&La,&Lb,&Lc);
while(Lc){
Lc=Lc->next;
printf("%d",&Lc);
}
}
用C编的,有什么问题 |