链表的几个操作:
返回单链表的长度
int sizeList(Node *pHead)
{
int size = 0;
while(pHead != NULL)
{
size++; //遍历链表size大小比链表的实际长度小1
pHead = pHead->next;
}
printf("sizeList函数执行,链表长度 %d \n",size);
return size; //链表的实际长度
}
检查单链表是否为空,若为空则返回1,否则返回0
int isEmptyList(Node *pHead)
{
if(pHead == NULL)
{
printf("isEmptyList函数执行,链表为空\n");
return 1;
}
printf("isEmptyList函数执行,链表非空\n");
return 0;
}
返回单链表中第pos个结点中的元素,若pos超出范围,则停止程序运行
elemType getElement(Node *pHead, int pos)
{
int i=0;
if(pos < 1)
{
printf("getElement函数执行,pos值非法\n");
return 0;
}
if(pHead == NULL)
{
printf("getElement函数执行,链表为空\n");
return 0;
//exit(1);
}
while(pHead !=NULL)
{
++i;
if(i == pos)
{
break;
}
pHead = pHead->next; //移到下一结点
}
if(i < pos) //链表长度不足则退出
{
printf("getElement函数执行,pos值超出链表长度\n");
return 0;
}
return pHead->element;
}
从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
elemType *getElemAddr(Node *pHead, elemType x)
{
if(NULL == pHead)
{
printf("getElemAddr函数执行,链表为空\n");
return NULL;
}
if(x < 0)
{
printf("getElemAddr函数执行,给定值X不合法\n");
return NULL;
}
while((pHead->element != x) && (NULL != pHead->next)) //判断是否到链表末尾,以及是否存在所要找的元素
{
pHead = pHead->next;
}
if((pHead->element != x) && (pHead != NULL))
{
printf("getElemAddr函数执行,在链表中未找到x值\n");
return NULL;
}
if(pHead->element == x)
{
printf("getElemAddr函数执行,元素 %d 的地址为 0x%x\n",x,&(pHead->element));
}
return &(pHead->element);//返回元素的地址
}