建立一个带头结点的单链表并初始化

如题所述

初始化,插入,查找都有了 ,代码是我自己写的 并且调试正确

struct LinkTest{
int data;
struct LinkTest *pNext;
};

void InLinkStart(int data,struct LinkTest * &pStart,struct LinkTest * &pEnd)
{
struct LinkTest *NewData =  (LinkTest *)malloc(sizeof(struct LinkTest));


NewData->data = data;
NewData->pNext = pStart->pNext;

pStart->pNext = NewData;


struct LinkTest *findend = pStart;
while (1) //寻找链表尾
{
if (findend->pNext != NULL)
{
findend = findend->pNext;
}
else
{
pEnd = findend;
break;
}
}
}

void InLinkEnd(int data,struct LinkTest * &pEnd)
{
struct LinkTest *NewData =  (LinkTest *)malloc(sizeof(struct LinkTest));

NewData->data = data;
pEnd->pNext = NewData;

pEnd = NewData;
return;
}

int FindData(int index,struct LinkTest * &pStart)
{
struct LinkTest *FindIndex = pStart;

for (int i=0;i<index;i++)
{
if (FindIndex->pNext != NULL)
{
FindIndex = FindIndex->pNext;
}
else
{
return -1;
}
}
return FindIndex->data;
}

int main(array<System::String ^> ^args)
{
struct LinkTest *pHead =  (LinkTest *)malloc(sizeof(struct LinkTest));

struct LinkTest *LinkEnd = pHead;

pHead->pNext = NULL;
//从头开始插入/
InLinkStart(5,pHead,LinkEnd);
InLinkStart(6,pHead,LinkEnd);
InLinkStart(7,pHead,LinkEnd);
InLinkStart(8,pHead,LinkEnd);

//插入末尾
InLinkEnd(9,LinkEnd);
InLinkEnd(10,LinkEnd);
InLinkEnd(11,LinkEnd);

int retdata = -1;
retdata = FindData(3,pHead); //返回找到的第三个元素的值

return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答