ps制作网站首页界面,山东新汇建设集团有限公司网站,淄博网站建设优化,有关网站建设的论文链表是很重要的一种数据结构#xff0c;又是一种看似简单但很难熟练掌握的东西#xff0c;究其主要原因应该就是它与指针结合的太紧密了。为了让大家更好的学习#xff0c;特将一些简单的算法罗列如下#xff0c;大家一起探讨#xff08;用c写的而且是不带头结点的#x… 链表是很重要的一种数据结构又是一种看似简单但很难熟练掌握的东西究其主要原因应该就是它与指针结合的太紧密了。为了让大家更好的学习特将一些简单的算法罗列如下大家一起探讨用c写的而且是不带头结点的 首先是链表的结构体 typedef struct node{ int data; struct node* next;}LIST; 1、往链表中压入元素 void Push(LIST **headRef,int newData)
{LIST *newNode new(LIST);newNode-data newData;newNode-next *headRef;*headRef newNode;
}如果我们加入的顺序是1、2、3则得到的链表是{3、2、1} 我们简单构建一个链表{1、2、3} LIST* BuildOneTwoThree()
{LIST *head 0;Push(head,3);Push(head,2);Push(head,1);return head;
} 2、计算链表的长度 int Length(LIST*head)
{LIST *current head;int length 0;while(current ! 0){length;current current-next;}return length;
}3、计算给定一个元素计算在链表中出现的次数 int Count(LIST*head,int data_to_find)
{int count 0;LIST *current head;while(current ! 0){if(current-data data_to_find)count;current current-next;}return count;
}4、 给定一个索引取出那个位置的值索引是从0开始的 int GetNth(LIST*head,int index)
{LIST *current head;assert(head ! 0);assert(index 0);for(index; index 0; index--){current current-next;}return current-data;
}5、删除一个链表并释放所有内存将头指针指向NULL void DeleteList(LIST**headRef)
{LIST*current *headRef;LIST*next 0;for(current ; current ! 0;){next current-next;delete(current);current next;}*headRef 0;
}6、弹出第一个元素并删除第一个节点 int Pop(LIST**headRef)
{int data 0;assert(*headRef ! 0);LIST *current *headRef;data (*headRef)-data;*headRef (*headRef)-next;delete(current);return data;}7、在给定索引处插入元素 void InsertNth(LIST**headRef,int index,int newData)
{if(index 0){Push(headRef,newData);}else{LIST*current *headRef;for(index; index 1; index--){assert(current ! NULL);current current-next;}assert(current ! 0);Push(current-next,newData);}
}上面的都是一些关于链表简单的算法有些是参考斯坦福大学的讲义而来的特此说明 转载于:https://www.cnblogs.com/self-control/archive/2012/12/27/2835347.html