双链表(尾部有序)

来源:互联网 发布:深度linux 安装 编辑:程序博客网 时间:2024/05/21 09:37

pragma once

include

include

typedef struct _NODE
{
int index; // 学号
char name[8]; // 名字
_NODE* prev; // 前一个节点地址
_NODE* next; // 后一个节点地址
}NODE;
//插入
NODE* _insert(NODE* list_tail, int index, const char* name);
//删除
bool _remove(const char*name);
//修改
bool _modify(NODE* list_tail,int index, const char* name);
bool _remove(NODE* list_tail, int index);
NODE* _find(NODE* list_tail,int index);
void _clear(NODE* list_tail);
void _show(NODE* list_tail);

//清空链表
//bool _clear();

#include "two-way.h"#include <math.h>#include <stdlib.h>#include <string.h>//插入NODE* _insert(NODE* list_tail, int index, const char* name){    NODE* node = (NODE*)malloc(sizeof(NODE));    memset(node,0,sizeof(NODE));    node->index = index;    strcpy(node->name, name);    node-> prev=NULL;      node-> next=NULL;    if (list_tail==NULL)    {        list_tail = node;        return list_tail;    }    if (node->index>list_tail->index)    {        list_tail->next = node;        node->prev = list_tail;        return list_tail;    }    for (NODE* p=list_tail;p!=NULL;p=p->prev)    {        if (node->index < p->index && p->prev==NULL)        {            node->next = p;            p->prev = node;            return node;        }        if (node->index<p->index&&node->index>p->prev->index)        {            node->next = p;            node->prev = p->prev;            p->prev->next = node;            p->prev = node;            return node;        }        /*if (p->prev == NULL)        {            node->next = p;            p->prev = node;            return node;        }        if (node->index > p->prev->index)        {            node->next = p;            node->prev = p->prev;            p->prev->next = node;            p->prev = node;            return node;        }        */    }    return NULL;}////修改//bool _modify(NODE* list_tail, int index, const char* name)//{////}//bool _remove(NODE* list_tail, int index)//{////}//找到//NODE* _find(NODE* list_tail, int index)//{//  //}////清空链表//void _clear(NODE* list_tail)//{// //}void _show(NODE* list_tail){    NODE* p = NULL;    for (p=list_tail;p!=NULL;p=p->prev)    {        printf("%d  %s",list_tail->index,list_tail->name);    }    printf("\n");}void main(){    NODE* p = NULL;     p = _insert(p,3,"张三");    _show(p);    p = _insert(p,1,"李四");    _show(p);    p = _insert(p,2,"王三");    _show(p);    system("pause");}
原创粉丝点击