// ListTable.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string.h>
typedef struct _Node
{
_Node(char *varname,_Node& prev,int isNexttoSb=1)
{
memset(name,0,256);
strcpy(name,varname);
if(isNexttoSb)
prev.pNext=this;
pNext=NULL;
}
_Node(char *varname)
{
memset(name,0,256);
strcpy(name,varname);
pNext=NULL;
}
char name[256];
struct _Node* pNext;
}Node,*PNode;
void printAll(PNode pnode)
{
do
{
printf("%s\n",pnode->name);
pnode=pnode->pNext;
}while(pnode!=NULL);
}
char* getName(PNode pnode,int index)
{
if(index<0)return NULL;
for(int i=0;i<index;i++)
{
pnode=pnode->pNext;
if(pnode==NULL)
return NULL;
}
return pnode->name;
}
PNode getNode(PNode pnode,int index)
{
if(index<0)return NULL;
for(int i=0;i<index;i++)
{
pnode=pnode->pNext;
if(pnode==NULL)
return NULL;
}
return pnode;
}
void InsertNode(PNode pPrenode,Node& node)
{
node.pNext=pPrenode->pNext;
pPrenode->pNext=&node;
}
PNode InsertNode(PNode pFirstnode,Node& node,int index)
{
PNode pPrenode=getNode(pFirstnode,index-1);
if(pPrenode==NULL) return NULL;
InsertNode(pPrenode,node);
return &node;
}
PNode RemoveNode(PNode pPrenode)
{
PNode nodeRemoved=pPrenode->pNext;
pPrenode->pNext=nodeRemoved->pNext;
return nodeRemoved;
}
PNode RemoveNode(PNode pFirstnode,int index)
{
PNode pPrenode=getNode(pFirstnode,index-1);
if(pPrenode==NULL) return NULL;
return RemoveNode(pPrenode);
}
int main(int argc, char* argv[])
{
Node zhao("zhao",*(reinterpret_cast<Node*>(NULL)),0);
PNode pFirst=&zhao;
Node qian("qian",zhao);
Node shun("shun",qian);
Node li("li",shun);
printAll(pFirst);
for(int i=0;i<10;i++)
printf("%s ",getName(pFirst,i));
printf("\n");
Node zhou("zhou");
InsertNode(&qian,zhou);
printAll(pFirst);
printf("===============\n");
RemoveNode(&shun);
printAll(pFirst);
printf("===============\n");
printf("加入wu:1========\n");
Node wu("wu");
InsertNode(pFirst,wu,1);
printAll(pFirst);
printf("===============\n");
printf("删除:1=========\n");
RemoveNode(pFirst,1);
printAll(pFirst);
printf("===============\n");
printf("Hello World!\n");
return 0;
}
zhao
qian
shun
li
zhao qian shun li (null) (null) (null) (null) (null) (null)
zhao
qian
zhou
shun
li
===============
zhao
qian
zhou
shun
===============
加入wu:1========
zhao
wu
qian
zhou
shun
===============
删除:1=========
zhao
qian
zhou
shun
===============
Hello World!
Press any key to continue