📄 上机2.2.cpp
字号:
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "malloc.h"
/*定义常量*/
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
/*定义表的结构类型*/
typedef int ET;
typedef ET * Ep;
typedef int Status;
typedef struct LNode{
ET data;
struct LNode *next;
}LNode, *LinkList;
/*申明函数原形*/
void printlk(LinkList L);/*打印输出*/
void CreatList( LinkList *L,int n);/*创建一个有N个节点的单链表*/
void Init(LinkList *L);/*初始化一个单链表*/
void MergeList(LinkList La,LinkList Lb,LinkList Lc);
Status ListInsert(LinkList L,int i,ET e);/*单链表的插入操作算法*/
Status Insert(LinkList L);/*接收插入数据,调用插入操作*/
Status GetElem(LinkList L,int i,ET *e);/*从单链表L中,读取第i个元素的值赋给参数e*/
//void paichu(LinkList L);
/*创建一个有N个节点的单链表*/
void CreatList( LinkList *L,int n){
int i;
LinkList p,q;
ET c;
p=(LinkList)malloc(sizeof(LNode));
p->next=NULL;
*L=q=p;
printf("Please input the data 值(从大到小入): ");
for (i=n;i>0;i--)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&c);
p->data = c;
p->next=q->next;
q->next=p;
}
}
/*初始化一个单链表*/
void Init(LinkList *L)
{
int n;
printf("Please input the number of the node 表长: ");
scanf("%d",&n);
CreatList(L,n);
}
/*从单链表L中,读取第i个元素的值赋给参数e*/
Status GetElem(LinkList L,int i,ET *e)
{
int j=1;
LinkList p;
p=L->next;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i)
return TRUE;
*e=p->data;
return FALSE;
}
/*单链表的插入操作算法*/
Status ListInsert(LinkList L,int i,ET e)
{
int j=0;
LinkList p,s;
p=L;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) return FALSE;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return TRUE;
}
/*打印输出单链表*/
void printlk(LinkList L){
LinkList p;
p=L->next;
while(p)
{
printf("%d-> ",p->data);
p =p->next;
}
printf("NULL\n");
}
/*将两个单链表合并为一个单链表*/
void MergeList(LinkList La,LinkList Lb,LinkList Lc) {
LinkList pa,pb,pc;
pa = La->next;
pb = Lb->next;
pc = Lc;
while (pa&&pb) {
if (pa->data <pb->data) {
pc->next = pa; pc = pa; pa = pa->next; }
else
if(pa->data=pb->data){
pc->next = pa; pc = pa; pa = pa->next; pb = pb->next;}
else {
pc->next=pb; pc=pb; pb=pb->next; }
}
pc->next = pa?pa:pb;
La->next=NULL; Lb->next=NULL;
}
/*void paichu(LinkList L)
{
LinkList p,q;
p=L;
q=p->next;
// L=L->next;
while(q)
{printf("a");
if(p->data==q->data)
{printf("b");
p->next=q->next;
if(!(p->next->next))
{
q->next;
if(p->data==q->data){p->next=NULL;break;}
}
if(!p->next)break;
p=p->next;
q=p->next;
}
p=p->next;
q=q->next;
}
}
*/
main()
{
LinkList La,Lb,Lc;
printf(" 作者: 沧海飞雪(笨笨鱼)\n把有序表LA,LB(从大到小的输入),中的合到LC中:\n");
Init(&La);
Init(&Lb);
CreatList(&Lc,0);
MergeList(La,Lb,Lc);
// paichu(Lc);
printf("Lc=");
printlk(Lc);
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -