#include <dos.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include<stdlib.h>
typedef struct NODE
{
int id;
char name[10];
struct NODE *NextNode;
}Node;
Node *NodeInit()
{
Node *pNode ;
pNode = (Node *)malloc(sizeof(struct NODE));
if(pNode == NULL)
{
exit( -1);
}
Node *p = pNode;
p->NextNode= NULL;
for(int i=0;i<10;i++)
{
p->id = i +1;
char temp[10]="";
sprintf(p->name,"liheng%d",i+1);
Node *pNew;
pNew = (Node *)malloc(sizeof(Node));
p->NextNode = pNew;
pNew->NextNode = NULL;
p = pNew;
}
return pNode;
}
int getNodeLength(Node *pNode)
{
int i = 0;
while(pNode->NextNode!=NULL)
{
i++;
pNode = pNode->NextNode;
}
return i;
}
Node *getNameByNode(Node *pNode,char *name)
{
Node *pTemp = pNode;
int m = getNodeLength(pNode);
for(int i=0;i<m ;i++)
{
if(strcmp(pTemp->name, name)==0)
{
return pTemp;
}
else
{
pTemp = pTemp->NextNode;
}
}
return NULL;
}
int travelNode(Node *pNode)
{
Node *p = pNode;
int m = getNodeLength(pNode);
printf("NUM ID NAME \n");
for(int i=0;i<m; i++)
{
printf("%d %d %s \n",i,p->id, p->name);
p = p->NextNode;
}
return 0;
}
int UpdateNode(Node *pNode,int num,int NodeId,char *NodeName)
{
int m = getNodeLength(pNode);
num = num -1;
if(m<num)
{
return -1;
}
int i=0;
while(i!=num)
{
pNode = pNode->NextNode;
i++;
}
pNode->id = NodeId;
strcpy(pNode->name,NodeName);
return 0;
}
int DeleteNode(Node *pNode,int num)
{
Node *p = pNode;
int m = getNodeLength(pNode);
if(m<num)
{
return -1;
}
int i =0;
while(i!=num -2)
{
p = p->NextNode;
i++;
}
p->NextNode = p->NextNode->NextNode;
return 0;
}
int main()
{
Node *myNode;
myNode = NodeInit();
travelNode(myNode);
Node *pHeng5 = getNameByNode(myNode,"liheng5");
if(pHeng5!=NULL)
{
printf("pHeng5->id = %d\n",pHeng5->id);
}
system("pause");
UpdateNode(myNode,2,2,"lulu");
printf("%d %s\n",myNode->id,myNode->name);
travelNode(myNode);
system("pause");
DeleteNode(myNode,5);
travelNode(myNode);
system("pause");
return 0;
}
C tree
最新推荐文章于 2024-06-04 17:04:16 发布