zoukankan      html  css  js  c++  java
  • [置顶] 数据结构之 双链表的创建,删除,插入

    数据结构中的双链表的实现

    // 双链表.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "malloc.h"
    #define maxSize 100 
    
    //双链表结构
    typedef struct DLNode
    {
    	int data;
    	struct DLNode *prior;
    	struct DLNode *next;
    }DLNode;
    //尾插法创建链表
    void CreateDLNodeR(DLNode *&L,int a[],int n)
    {
    	DLNode *p,*s;
    	L=(DLNode*)malloc(sizeof(DLNode));
    	L->prior=NULL;
    	L->next=NULL;
    	p=L;
    	for(int i=0;i<n;i++)
    	{
    		s=(DLNode*)malloc(sizeof(DLNode));
    		s->data=a[i];
    
    		p->next=s;
    		s->prior=p;
    		p=p->next;//p=s
    	}
    	p->next=NULL;
    }
    //头插法创建链表
    void CreateDLNodeF(DLNode *&L,int a[],int n)
    {
    	DLNode *p,*s;
    	L=(DLNode*)malloc(sizeof(DLNode));
    	L->prior=NULL;
    	L->next=NULL;
    	for(int i=0;i<n;i++)
    	{
    		s=(DLNode*)malloc(sizeof(DLNode));
    		s->data=a[i];
    		
    		s->prior=L;
    		s->next=L->next;
    		L->next=s;
    	}
    }
    //插入节点 在locate位置 插入x
    void LNodeInsert(DLNode *&L,int locate,int x)
    {
    	DLNode *p=L,*s;
    	int j=0;
    	while(p->next!=NULL&&j<locate-1)
    	{
    		p=p->next;
    		j++;
    	}
    	s=(DLNode*)malloc(sizeof(DLNode));
    	s->data=x;
    
    	s->next=p->next;
    	s->prior=p;
    	p->next=s;
    	
    }
    void LNodeDel(DLNode *&L,int locate)
    {
    	DLNode *p=L,*q;
    	int j=0;
    	while(p->next!=NULL&&j<locate-1)
    	{
    		p=p->next;
    		j++;
    	}
    	q=p->next;
    	p->next=q->next;
    	free(q);
    	
    }
    void show(DLNode *L)
    {
    	DLNode *p=L->next;
    	while(p!=NULL)
    	{
    		printf("%d ",p->data);
    		p=p->next;
    	}
    }
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	DLNode *L;
    	int a[]={0,1,2,3,4,5,6,7,8,9};
    	CreateDLNodeR(L,a,10);
    	LNodeInsert(L,1,-1);
    	LNodeInsert(L,1,-2);
    	LNodeDel(L,1);
    	LNodeInsert(L,10,-8);
    	show(L);
    }
    
    


    以上代码实现了,双链表的操作

  • 相关阅读:
    什么是32位汇编的flat平坦内存模式
    oracle随机操作
    网线8根排列顺序
    vb创建NT服务
    函数声明后面加个stdcall是什么意思
    一些基础问题。
    ArcGIS Server中地图打印的实现
    添加BaseCommand 和Base Tool 的注意事项
    获取字符串中的某个子字符串
    AE, C#,按纸张打印地图
  • 原文地址:https://www.cnblogs.com/zhujunxxxxx/p/3344863.html
Copyright © 2011-2022 走看看