zoukankan      html  css  js  c++  java
  • 数据结构与算法之顺序表

    顺序表

    #include<stdio.h>
    #include<stdlib.h> 
    #include<string.h>
    #define MaxSize 100
    typedef int Elemtype;
    typedef struct LNode  
    {
    	Elemtype data;
    	struct LNode *next;		
    } LinkNode;
    				
    void CreateListR(LinkNode *&L,Elemtype a[],int n)   //尾插法建立单链表
    {
    	LinkNode *s,*r;
    	L=(LinkNode *)malloc(sizeof(LinkNode));  	
    	L->next=NULL;
    	r=L;				
    	for (int i=0;i<n;i++)
    	{	
    		s=(LinkNode *)malloc(sizeof(LinkNode));
    		s->data=a[i];
    		r->next=s;			
    		r=s;
    	}
    	r->next=NULL;			
    }
    
    void InitList(LinkNode *&L)
    {
    	L=(LinkNode *)malloc(sizeof(LinkNode));  	   //初始化
    	L->next=NULL;
    }
    
    void DestroyList(LinkNode *&L)                   //释放单链表      
    {
    	LinkNode *pre=L,*p=pre->next;
    	while (p!=NULL)
    	{	free(pre);
    		pre=p;
    		p=pre->next;
    	}
    	free(pre);	
    }
    
    
    /*void sort(LinkNode *&L)//单链表递增排序 
    {	LinkNode *p,*pre,*q;
    	p=L->next->next;		//p指向L的第2个数据结点
    	L->next->next=NULL;		//构造只含一个数据结点的有序表
    	while (p!=NULL)
    	{	q=p->next;			//q保存p结点后继结点的指针
    		pre=L;				//从有序表开头进行比较,pre指向p结点的前驱结点
    		while (pre->next!=NULL && pre->next->data<p->data)
    			pre=pre->next;	//在有序表中找插入p结点的前驱结点pre
    		p->next=pre->next;	//在pre结点之后插入p结点
    		pre->next=p;
    		p=q;				//扫描原单链表余下的结点
    	}
    }
    int main()
    {
    	LinkNode *L;
    	int n=10;
    	ElemType a[]={1,3,2,9,0,4,7,6,5,8};
    	CreateListR(L,a,n);
    	printf("L:");DispList(L);
    	printf("排序
    ");
    	sort(L);
    	printf("L:");DispList(L);
    	DestroyList(L);
    	return 1;
    }*/
    
    
    void UnionList1(LinkNode*LA,LinkNode*LB,LinkNode *&LC)//二路归并算法 
    {
    	LinkNode *pa=LA->next,*pb=LB->next,*r,*s,*z;
    	LC=(LinkNode *)malloc(sizeof(LinkNode));
    	r=LC;
    	while(pa!=NULL&&pb!=NULL)
    	{
    		if(pa->data<pb->data)
    		{
    			s=(LinkNode *)malloc(sizeof(LinkNode));
    			s->data=pa->data;
    			r->next=s;
    			r=s;
    		/**/	//pb->data=pa->data+pb->data;
    			pa=pa->next;
    		}
    		else
    		{
    			s=(LinkNode*)malloc(sizeof(LinkNode));
    			s->data=pb->data;
    			r->next=s;
    			r=s;
    		/**/	//pa->data=pa->data+pb->data;
    			pb=pb->next;
    		}
    		
    	}
    	while(pa!=NULL)
    	{
    		s=(LinkNode*)malloc(sizeof(LinkNode));
    		s->data=pa->data; 
    		r->next=s;
    		r=s;
    		pa=pa->next;
    	}
    	while(pb!=NULL)
    	{
    		s=(LinkNode*)malloc(sizeof(LinkNode));
    		s->data=pb->data;
    		r->next=s;r=s;
    		pb=pb->next;
    	}
    	r->next=NULL;
    }
    
    
    
    void DispList(LinkNode *L)    //  输出链表         
    {
    	LinkNode *p=L->next;
    	while (p!=NULL)
    	{	printf("%d ",p->data);
    		p=p->next;
    	}
    	printf("
    ");
    }
    
    
    
    int main()
    {
    	LinkNode *LA;
    	LinkNode *LB;
    	LinkNode *LC;
        int  a[5]={1,3,5,7,9};     
        //printf("请输入多项式a:");     
        /*for(int i;i<MaxSize;i++)
        {
        	scanf("%d",&a[i]);
        }*/
        int b[5]={2,4,6,8,10};
        /*printf("请输入多项式b");     
    	for(int i;i<MaxSize;i++)
        {
             scanf("%d",&b[i]);
        }*/ 
    	int c[5]={0,0,0,0,0};               
        InitList(LA);                        
        printf("LA初始化完成
    "); 
    	InitList(LB);                        
        printf("LB初始化完成
    ");     
        CreateListR(LA,a,5);      
        CreateListR(LB,b,5);       
        UnionList1(LA,LB,LC);
        DispList(LC);
        DestroyList(LA);        //释放链表LA
        printf("已释放链表LA
    ");
        DestroyList(LB);        //释放链表LB
        printf("已释放链表LB
    ");
        DestroyList(LC);        //释放链表LC
        printf("已释放链表LC");
        
    	    
    	   
    }
    
  • 相关阅读:
    Flask 应用上下文
    request 的介绍使用属性
    Session 常见操作
    cookie 常用操作
    Python三大web框架简单介绍
    Flask 入门
    类与类之间的关系
    request、response 中文乱码问题与解决方式
    JAVA笔记
    MySQL导入大sql 文件大小限制问题的解决
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832379.html
Copyright © 2011-2022 走看看