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");
}