经典面试题目--逆转单向链表

来源:互联网 发布:邢台羊毛衫知乎 编辑:程序博客网 时间:2024/04/24 12:02

最近觉得很有必要练习一下基本的数据结构题目。单向链表的反转如果只是描述思路的话,其实很好说明白。但是一旦开始实际的操作,发现会有一些小问题。所以,笔者实打实的写了一下代码,这里只展示一下几个基本函数。


链表的构建 --

typedef struct LinkNode {unsigned int value;struct LinkNode *pNext;}LinkNode, *pLinkNode;pLinkNode CreateLinkNode(unsigned int val) {pLinkNode pHead = (pLinkNode)malloc(sizeof(pLinkNode));printf("\n\n~~~~~~~~~~~~ CreateLinkNode ~~~~~~~~~~~~ val = %u\n",val);pHead->value = val;pHead->pNext = NULL;return pHead;}

遍历以及计数 --

// calculate the number of elementsint TraverseLink(pLinkNode pNode) {printf("\n\n~~~~~~~~~~~ TraverseLink ~~~~~~~~~~\n");if(pNode==NULL) {printf("pNode == NULL so print NOTHING\n");return 0;}int count = 0;while(pNode!=NULL) {printf("@@@@@ %u @@@@@\n",pNode->value);pNode = pNode->pNext;count++;}return count;}

最关键的函数,元素逆转 --

pLinkNode ReverseLink(pLinkNode pHead) {printf("\n\n~~~~~~~~~~~ ReverseLink ~~~~~~~~~~\n");if(pHead==NULL) return NULL;pLinkNode p_cur = pHead;pLinkNode p_previous = NULL;pLinkNode p_next = NULL;while(p_cur!=NULL) {p_next = p_cur->pNext;p_cur->pNext = p_previous;p_previous = p_cur;p_cur = p_next;}return p_previous;}

这里,有必要提及一下销毁链表的函数 --

void DestroyLink(LinkNode **pNode) {printf("\n\n~~~~~~~~~~~ DestroyLink ~~~~~~~~~~\n");if((*pNode)==NULL)return;int count = 0;LinkNode *p_cur = *pNode;LinkNode **p_previous = pNode;while(p_cur!=NULL) {printf("\n@@@@@@@@@@@@@@@@ %d checking %u !!! @@@@@@@@@@@@\n",count,p_cur->value);// set up the previous pointer*p_previous = p_cur;// let the current pointer moves to the next elementp_cur = p_cur->pNext;// clear up the previous pointerfree(*p_previous);*p_previous = NULL;count++;}*p_previous = NULL;*pNode = NULL;return;}

因为本人有点儿强迫症,喜欢free某个空间后,把指针置为NULL,因此这里传递的参数需要是**标记的指向指针的指针。

刚开始写的时候没有注意,只是用了指针,结果根本无法把链表的每个元素指针置为空值,后来意识到了错误在哪里,具体可以看笔者的另一篇博文《c语言函数free某个空间》。

(码字不易,转载请注明出处)



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 深圳爱帝宫月子中心 帝宫有兽 帝少溺宠妻娇轻轻亲 帝君娇宠寒门后 傲娇帝少强势宠 帝宫 浮欢谋帝京之乱 帝少的二次欢宠 烈爱焚身帝少的二次欢宠 仙武帝尊txt免费下載 仙武帝尊叶辰免费阅读txt下载 帝尊大人夫人跑了 仙武帝尊叶辰全本txt下载 纯阳帝尊 玉鼎真人 帝尊永生 天下为道 紫l阳帝尊 六界三道武帝仙尊叶辰笔趣格 仙武帝尊叶辰前世是谁 修罗帝尊 沉墨鑫海 仙武帝尊免费听书 腹黑帝尊抱一抱 帝尊你失宠啦洛千雪免费阅读 帝尊家具 系统之位面帝尊 我本是凡人 月极帝尊 竹寺希 仙武帝尊叶辰免费阅读j 仙武帝尊sodu 不死帝尊全文免费阅读全文 仙武帝尊叶辰全本txt免费下载 帝尊别乱来 混元帝尊传 爆萌小妖帝尊大人饶了我 帝尊全文阅读无弹窗 仙尊武帝免费全文阅读 帝尊的绝世狂妃 免费阅读仙武帝尊 万界帝师 威克弗里斯特大学 五征帝途3米6的新车多少钱 五征飞碟帝途汽车报价 帝征九天