Algorithm
Remove Nth Node From End of List
Solution
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int GetLength(struct ListNode*head)
{
if(head==NULL)
{
return 0;
}
struct ListNode *p=head;
int length=1;
while(p->next!=NULL)
{
length++;
p=p->next;
}
return length;
}
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
int length=GetLength(head);
struct ListNode * headnode=malloc(sizeof(struct ListNode));
headnode->next=head;
struct ListNode * headini;
if(length>=1){
int i=0;
struct ListNode * p=headnode;
while(i<length-n)
{
i++;
p=p->next;
}
struct ListNode *tmp;
tmp=p->next;
p->next=p->next->next;
free(tmp);
}
else if(length==0)
{
headini=NULL;
}
headini=headnode->next;
return headini;
}
简单的链表实现,主要还是对空集的判断。
REVIEW
《信号和系统》奥本海姆,一本关于数字信号的初级的书本,初步阅读了书籍的导论部分,了解了信号的数字解析方式,这本书是进行图像处理和语音识别的基础课程,在以前学习这些内容的时候,自己多少有一些不知所措,看了这书的目录和导论部分,我才知道自己缺少的不仅是数学方面的知识,还有对于数学应用的工程内容。
TIPS
- 网易开源了他的DUILIB界面库,很大的提升了DUILIB的使用功效,可以制作更多的动态效果。
- lrc歌词内容解析,了解了基本的lrc歌词结构。
- 使用了不完整的结构体(指针),没有初始化指针,给指针进行动态内存分配可以解决问题
- 程序界面的制作,需要学习基本的功能需求流程图,这样对于程序整体的逻辑和程序的维护理解都有这莫大的好处。
SHARE
《编程珠玑》,一本可以从薄读到厚,从第一章开始就深入理解了计算机中的编码,排序和位操作的一些关系,可以了解不一样的计算机。