// 0408a.cpp
//双链表
#include "stdafx.h"
int main(int argc, char* argv[])
{
Person data1={1,"li","shuxue"};
Person data2={2,"wang","hanyu"};
Person data3={3,"zheng","computer"};
void *pPos1,*pPos2;
pPos1=AddTail(&data1);
pPos2=AddTail(&data2);
InsertBefore(pPos2,&data3);
Delete(pPos1);
return 0;
}
//stack.cpp
#include "stdafx.h"
static Node *g_pHead = NULL;
static Node *g_pTail = NULL;
void *AddTail(const Person *pData)//从尾部增加节点
{
Node *pNode=(Node *)malloc(sizeof(Node));
pNode->data=*pData;
if(g_pHead)
g_pTail->pNext=pNode;
else
g_pHead=pNode;
pNode->pPrev=g_pTail;
pNode->pNext=NULL;
g_pTail=pNode;
return pNode;
}
void *InsertBefore(void *pPos,const Person *pData)//指定节点前插入节点
{
Node *pCurNode=(Node *)pPos;
Node *pNewNode=(Node *)malloc(sizeof(Node));
pNewNode->data=*pData;
if(g_pHead==pCurNode){ //说明当前节点是头节点
pNewNode->pNext=pCurNode;
pNewNode->pPrev=NULL;//pCurNode->pPrev
pCurNode->pPrev=pNewNode;
g_pHead=pNewNode;
}else{
pNewNode->pNext=pCurNode;
pNewNode->pPrev=pCurNode->pPrev;
pCurNode->pPrev->pNext=pNewNode;
pCurNode->pPrev=pNewNode;
}
return pCurNode;
}
void Delete(void *pPos)//删除节点
{
Node *pDel=(Node*)pPos;
if(g_pHead==pDel)
g_pHead=pDel->pNext;
else
pDel->pPrev->pNext=pDel->pNext;
if(pDel == g_pTail)
g_pTail = pDel->pPrev;
else
pDel->pNext->pPrev = pDel->pPrev;
}
//stack.h
#include "stdafx.h"
struct Person
{
int iId;
char namme[20];
char Major[20];
}*pPerson;
struct Node
{
Person data;
struct Node *pNext;
struct Node *pPrev;;
};
void *AddTail(const Person *pDate);
void *InsertBefore(void *pPos,const Person *pData);
void Delete(void *pPos);
3 双链表
最新推荐文章于 2023-10-30 14:11:28 发布