⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 上机2.2.cpp

📁 该程序是编了一个菜单
💻 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 + -