企業級鏈表庫測試
在這段難熬的日子裏,這將是我唯一的朋友。
/*
C++學習筆記03——企業級鏈表庫測試
2017.04.27
*/
三個文件,Mylinklist.h,wmblinklist.dll,wmblinklist.lib,將lib文件導入 連接器-輸入中。
Mylinklist.h::
@Zbin,2017.04.27
#ifndef _MYMLINKLIST_H_
#define _MYMLINKLIST_H_
typedef void LinkList;
typedef struct _tag_LinkListNode
{
struct _tag_LinkListNode* next;
}LinkListNode;
/*
typedef struct _tag_LinkListNode LinkListNode;
struct _tag_LinkListNode
{
LinkListNode* next;
};
*/
LinkList* LinkList_Create();
void LinkList_Destroy(LinkList* list);
void LinkList_Clear(LinkList* list);
int LinkList_Length(LinkList* list);
int LinkList_Insert(LinkList* list, LinkListNode* node, int pos);
LinkListNode* LinkList_Get(LinkList* list, int pos);
LinkListNode* LinkList_Delete(LinkList* list, int pos);
#endif
demo01_企業級鏈表庫測試.c:
@Zbin,2017.04.27
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "Mylinklist.h"
typedef struct _Teacher
{
LinkListNode node;
char name[32];
int age;
}Teacher;
void main()
{
int linklen = 0,i = 0;
Teacher t1, t2, t3, t4, t5;
LinkList* list = NULL;
t1.age = 10;
t2.age = 20;
t3.age = 30;
t4.age = 40;
t5.age = 50;
list = LinkList_Create();
linklen = LinkList_Length(list);
LinkList_Insert(list, (LinkListNode *)&t1, LinkList_Length(list));
LinkList_Insert(list, (LinkListNode *)&t2, LinkList_Length(list));
LinkList_Insert(list, (LinkListNode *)&t3, LinkList_Length(list));
LinkList_Insert(list, (LinkListNode *)&t4, LinkList_Length(list));
LinkList_Insert(list, (LinkListNode *)&t5, LinkList_Length(list));
linklen = LinkList_Length(list);
//遍歷鏈表元素
for (i = 0; i < LinkList_Length(list); i++)
{
Teacher *tmp = (Teacher *)LinkList_Get(list, i);
if (tmp != NULL)
{
printf("2 tmp->age:%d\n", tmp->age);
}
}
//從鏈表中獲刪除元素
while (LinkList_Length(list) > 0)
{
Teacher *tmp = (Teacher *)LinkList_Delete(list, 0);
if (tmp != NULL)
{
printf("\ntmp->age:%d", tmp->age);
}
}
LinkList_Destroy(list);
system("pause");
}