for(i=1;i<=lb->length;i++) }
void unionSort(sqlist *la,sqlist *lb,sqlist *lc)//已知两个有序表La和Lb,把两个有序表合并成仍然有序的线性表Lc. {
int i,j=0,t;
for(i=0;i
lc->computer[i]=la->computer[i]; lc->length=la->length; }
for(i=la->length;i<(la->length+lb->length);i++) { }
lc->computer[i]=lb->computer[j]; lc->length=lc->length+1; j++;
{ }
e=Select1(lb,i); j=Select2(la,e); if(j==0) {
la->computer[la->length]=e; la->length=la->length+1; }
for(i=0;i
for(j=i+1;j
if (lc->computer[i]>lc->computer[j])
}
{t=lc->computer[i];lc->computer[i]=lc->computer[j];lc->computer[j]=t;} }
int main() {
sqlist la,lb,lc;
printf(\请输入la的值 :\\n\initlist(&la);
printf(\输出la的值 :\\n\outputlist(&la);
printf(\请输入lb的值:\\n\initlist(&lb);
printf(\输出lb的值 :\\n\
outputlist(&lb); int choiceNumber; char whetherContinue='Y';
while(whetherContinue!='N' && whetherContinue!='n') {
printf(\printf(\实现la中的功能:\\n\
printf(\插入\\n\printf(\删除\\n\
printf(\输入你想选择的位置\\n\printf(\输入你想选择的值\\n\printf(\合并la和lb\\n\printf(\合成一个新的线性表:\\n\printf(\请输入你要执行的功能: \scanf(\getchar();
printf(\
switch(choiceNumber) { case 1:
{ }
int insertPosition,insertValue; printf(\请输入所插入的位置和值:\\n\scanf(\getchar();
Insert(&la,insertPosition,insertValue);outputlist(&la);break;
case 2:
{
int deletePosition;
printf(\输入你所删除的位置:\\n\
scanf(\
}
getchar();
Delete(&la,deletePosition);outputlist(&la);break;
case 3:
{ }
int selectPosition;
printf(\输入你想选择的位置:\\n\scanf(\getchar();
printf(\值是:%d\\n\break;
case 4:
{
int selectValue;
}
printf(\输入你想选择的值:\\n\scanf(\getchar();
printf(\位置是:%d\\n\
case 5:Union(&la,&lb);outputlist(&la);break;
case 6: unionSort(&la,&lb,&lc);outputlist(&lc);break; default:printf(\}
printf(\
scanf(\ }
二、链式储存结构
1、单链表的基本操作的实现:建表、插入、删除、查找。
当我们要在线性表的链式存储结构上的第i个位置上插入一个元素时,只需修改第 i-1个元素结点的指针和新元素结点指针便可完成插入;若要删除第i个元素时,也只需修改第 i-1个元素的指针就行。 2、两个线性表的合并运算
已知线性表La和Lb,求La=La∩Lb。
3、已知两个有序表La和Lb,把两个有序表合并成仍然有序的线性表Lc. 源程序代码:
#include
//链式存储的数据结构的定义 typedef struct node{ int data;
struct node *next; } NODE;
NODE *Create()////用头插法建立带头节点的单链表 {
NODE *p,*head; int x;
getchar(); }
return 0;
head=(NODE *)malloc(sizeof(NODE)); head->next=NULL;
printf(\输入数据,-1 结束输入!\\n\ scanf(\ while(x!=-1){
p=(NODE *)malloc(sizeof(NODE)); p->data=x;
p->next=head->next; head->next=p; scanf(\ }
return(head); }
/*****************输出单链表各元素的值*************************/ void Output(NODE *head){ NODE *p; p=head;
printf(\ while(p->next!=NULL){
printf(\ p=p->next; }
// printf(\}
/****************求单链表的长度(元素的个数)**************************/ int ListLen(NODE *head){ NODE *p=head; int i=0; while(p){ i++;
p=p->next; }
return i-1; }
/******************查找单链表中第i个元素的值************************/ int Get(NODE *head,int i){ NODE *p=head; int j=0;
while(p && jnext; j++; }
if(!p || j>i) return -1; else return p->data;
数据结构 清华大学出版社 严蔚敏吴伟民编著



