整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS命名规则

CSS命名规则

:header

  内容:content/containe

  尾:footer

  导航:nav

  侧栏:sidebar

  栏目:column

  页面外围控制整体布局宽度:wrapper

  左右中:left right center

  登录条:loginbar

  标志:logo

  广告:banner

  页面主体:main

  热点:hot

  新闻:news

  下载:download

  子导航:subnav

  菜单:menu

  子菜单:submenu

  搜索:search

  友情链接:friendlink

  页脚:footer

  版权:copyright

  滚动:scroll

  内容:content

  标签页:tab

  文章列表:list

  提示信息:msg

  小技巧:tips

  栏目标题:title

  加入:joinus

  指南:guild

  服务:service

  注册:regsiter

  状态:status

  投票:vote

  合作伙伴:partner

XHTML文件中id的命名

(1)页面结构

  容器: container

  页头:header

  内容:content/container

  页面主体:main

  页尾:footer

  导航:nav

  侧栏:sidebar

  栏目:column

  页面外围控制整体布局宽度:wrapper

  左右中:left right center

(2)导航

  导航:nav

  主导航:mainbav

  子导航:subnav

  顶导航:topnav

  边导航:sidebar

  左导航:leftsidebar

  右导航:rightsidebar

  菜单:menu

  子菜单:submenu

  标题: title

  摘要: summary

(3)功能

  标志:logo

  广告:banner

  登陆:login

  登录条:loginbar

  注册:regsiter

  搜索:search

  功能区:shop

  标题:title

  加入:joinus

  状态:status

  按钮:btn

  滚动:scroll

  标签页:tab

  文章列表:list

  提示信息:msg

  当前的: current

  小技巧:tips

  图标: icon

  注释:note

  指南:guild

  服务:service

  热点:hot

  新闻:news

  下载:download

  投票:vote

  合作伙伴:partner

  友情链接:link

  版权:copyright

1.CSSID的命名

  外套:wrap

  主导航:mainNav

  子导航:subnav

  页脚:footer

  整个页面:content

  页眉:header

  页脚:footer

  商标:label

  标题:title

  主导航:mainNav(globalNav)

  顶导航:topnav

  边导航:sidebar

  左导航:leftsideBar

  右导航:rightsideBar

  旗志:logo

  标语:banner

  菜单内容1:menu1Content

  菜单容量:menuContainer

  子菜单:submenu

  边导航图标:sidebarIcon

  注释:note

  面包屑:breadCrumb(即页面所处位置导航提示)

  容器:container

  内容:content

  搜索:search

  登陆:login

  功能区:shop(如购物车,收银台)

  当前的current

  2.样式文件命名

  主要的:master.css

  布局版面:layout.css

  专栏:columns.css

  文字:font.css

  打印样式:print.css

  主题:themes.css

码实现链表的操作函数

1.首先是尾插 ,要实现尾插,首先的先有一个链表,并且为空。

即先构造一个链表,并且进行初始化。

[html] view plain copy

  1. //构造链表
  2. typedef int DataType;
  3. typedef struct SListNode {
  4. DataType data;
  5. struct SListNode *pNext;
  6. } SListNode;
  7. // 初始化
  8. void SListInit(SListNode **ppFirst)
  9. {
  10. assert(ppFirst !=NULL);
  11. *ppFirst=NULL;
  12. }
  13. 进行尾插前,我们的在构造一个新链表,用来存放尾插后形成的新链表。
  14. SListNode * CreateNewNode(int data)
  15. {
  16. SListNode *pNewNode=(SListNode *)malloc(sizeof(SListNode));
  17. assert(pNewNode);
  18. pNewNode->data=data;
  19. pNewNode->pNext=NULL;
  20. return pNewNode;
  21. }
  22. 下面进行尾插
  23. void PushBack(SListNode **ppFirst, DataType data)
  24. {
  25. assert(ppFirst !=NULL);
  26. SListNode *pNewNode=CreateNewNode(data);
  27. if (*ppFirst==NULL) {
  28. *ppFirst=pNewNode;
  29. return;
  30. }
  31. SListNode *pNode;
  32. pNode=*ppFirst;
  33. while (pNode->pNext !=NULL) {
  34. pNode=pNode->pNext;
  35. }
  36. // pNode 就是倒数第一个
  37. pNode->pNext=pNewNode;
  38. }
  39. 再加上打印函数与测试函数,main函数。
  40. //print
  41. void Print(SListNode *pFirst)
  42. {
  43. SListNode *pNode;
  44. for (pNode=pFirst; pNode; pNode=pNode->pNext) {
  45. printf("%d -> ", pNode->data);
  46. }
  47. printf("NULL\n");
  48. }
  49. //测试函数
  50. void TestSList()
  51. {
  52. SListNode *pFirst;
  53. SListInit(&pFirst);
  54. assert(pFirst==NULL);
  55. PushBack(&pFirst, 1);
  56. assert(pFirst !=NULL);
  57. Print(pFirst);
  58. PushBack(&pFirst, 2);
  59. PushBack(&pFirst, 3);
  60. PushBack(&pFirst, 4);
  61. Print(pFirst);
  62. }
  63. //main函数
  64. #include"SList.h"
  65. int main(){
  66. TestSList();
  67. system("pause");
  68. }
  69. 效果如下

2.头插

[html] view plain copy

  1. void PushFront(SListNode **ppFirst, DataType data)
  2. {assert(ppFirst !=NULL);
  3. SListNode *pNewNode=CreateNewNode(data);
  4. pNewNode->pNext=*ppFirst;
  5. *ppFirst=pNewNode;
  6. }
  7. 测试函数如下:
  8. PushFront(&pFirst, 5);
  9. PushFront(&pFirst, 8);
  10. Print(pFirst);

3.按下标插入(令给定下标是pos,pos一定存在)

[html] view plain copy

  1. void Insert(SListNode **ppFirst, SListNode *pPos, DataType data)
  2. {
  3. assert(ppFirst !=NULL);
  4. SListNode *pNode;
  5. pNode=*ppFirst;
  6. // pPos 是第一个结点地址
  7. if (pPos==*ppFirst) {
  8. PushFront(ppFirst, data);
  9. return;
  10. }
  11. while (pNode->pNext !=pPos){
  12. pNode=pNode->pNext;
  13. }
  14. SListNode *pNewNode=CreateNewNode(data);
  15. pNode->pNext=pNewNode;
  16. pNewNode->pNext=pPos;
  17. }
  18. 进行按给定位置插入 需确定pos位置,需定义find函数
  19. //find
  20. SListNode * Find(SListNode *pFirst, DataType data)
  21. {
  22. SListNode *pNode;
  23. for (pNode=pFirst; pNode; pNode=pNode->pNext) {
  24. if (pNode->data==data) {
  25. return pNode;
  26. }
  27. }
  28. return NULL;
  29. }
  30. 测试代码如下:
  31. SListNode *pFound=Find(pFirst, 3);
  32. if (pFound==NULL) {
  33. printf("没有找到\n");
  34. }
  35. else {
  36. printf("%d\n", pFound->data);
  37. Insert(&pFirst, pFound, 100);
  38. }
  39. Print(pFirst);
  40. 效果如下:

二、删除

1.头删

[html] view plain copy

  1. void PopFront(SListNode **ppFirst)
  2. {
  3. assert(ppFirst !=NULL);
  4. assert(*ppFirst !=NULL);
  5. SListNode *pOldFirst=*ppFirst;
  6. *ppFirst=(*ppFirst)->pNext;
  7. free(pOldFirst);
  8. }
  9. 测试代码如下:
  10. PopFront(&pFirst);
  11. Print(pFirst);
  12. 效果如下:

2.尾删

[html] view plain copy

  1. void PopBack(SListNode **ppFirst)
  2. {
  3. assert(ppFirst !=NULL);
  4. assert(*ppFirst !=NULL);
  5. if ((*ppFirst)->pNext==NULL) {
  6. free(*ppFirst);
  7. *ppFirst=NULL;
  8. return;
  9. }
  10. SListNode *pNode=*ppFirst;
  11. while (pNode->pNext->pNext !=NULL)
  12. {
  13. pNode=pNode->pNext;
  14. }
  15. free(pNode->pNext);
  16. pNode->pNext=NULL;
  17. }
  18. 测试函数如下:
  19. PopBack(&pFirst);
  20. Print(pFirst);
  21. 效果如下:

3.按位置删除(根据结点地址删除,结点肯定在链表里,令节点位置为pPos)

[html] view plain copy

  1. void Erase(SListNode **ppFirst, SListNode *pPos)
  2. {
  3. assert(ppFirst !=NULL);
  4. assert(*ppFirst !=NULL);
  5. if (*ppFirst==pPos) {
  6. PopFront(ppFirst);
  7. return;
  8. }
  9. SListNode *pCur;
  10. for (pCur=*ppFirst; pCur->pNext !=pPos; pCur=pCur->pNext) {
  11. }
  12. // pCur 就是 pPos的前一个
  13. pCur->pNext=pPos->pNext;
  14. free(pPos);
  15. }
  16. 测试函数如下:
  17. SListNode *pFound=Find(pFirst, 1);
  18. { if (pFound==NULL) {
  19. printf("没有找到\n");
  20. }
  21. else {
  22. printf("%d\n", pFound->data);
  23. Erase(&pFirst, pFound);
  24. }
  25. SListDestroy(&pFirst);
  26. }
  27. 运行效果如下

4.按值删除(根据数据去删除,删除遇到的第一个结点)

[html] view plain copy

  1. void Remove(SListNode **ppFirst, DataType data)
  2. {
  3. SListNode *pFound=Find(*ppFirst, data);
  4. if (pFound !=NULL) {
  5. Erase(ppFirst, pFound);
  6. }
  7. }
  8. 测试函数如下:
  9. void TestRemove()
  10. {
  11. SListNode *pFirst;
  12. SListInit(&pFirst);
  13. PushBack(&pFirst, 4);
  14. PushBack(&pFirst, 3);
  15. PushBack(&pFirst, 1);
  16. PushBack(&pFirst, 3);
  17. PushBack(&pFirst, 3);
  18. PushBack(&pFirst, 3);
  19. PushBack(&pFirst, 3);
  20. PushBack(&pFirst, 3);
  21. PushBack(&pFirst, 5);
  22. PushBack(&pFirst, 3);
  23. Print(pFirst);
  24. Remove(&pFirst, 3);
  25. Print(pFirst);
  26. 运行效果如图

5.按值删除( 根据数据去删除,删除遇到的所有结点)

[html] view plain copy

  1. void RemoveAll(SListNode **ppFirst, DataType data)
  2. {
  3. SListNode *pNode=*ppFirst;
  4. SListNode *pNext;
  5. while (pNode->pNext) {
  6. if (pNode->pNext->data==data) {
  7. pNext=pNode->pNext;
  8. pNode->pNext=pNode->pNext->pNext;
  9. free(pNext);
  10. }
  11. else {
  12. pNode=pNode->pNext;
  13. }
  14. }
  15. if ((*ppFirst)->data==data) {
  16. PopFront(ppFirst);
  17. }
  18. }
  19. 测试函数如下:
  20. RemoveAll(&pFirst, 3);
  21. Print(pFirst);
  22. 测试效果如下

源代码如下:

[html] view plain copy

  1. Hello.h
  2. #pragma once
  3. #include <stdlib.h>
  4. #include <assert.h>
  5. #include <stdio.h>
  6. typedef int DataType;
  7. typedef struct SListNode {
  8. DataType data;
  9. struct SListNode *pNext;
  10. } SListNode;
  11. // 初始化
  12. void SListInit(SListNode **ppFirst)
  13. {
  14. assert(ppFirst !=NULL);
  15. *ppFirst=NULL;
  16. }
  17. SListNode * CreateNewNode(int data)
  18. {
  19. SListNode *pNewNode=(SListNode *)malloc(sizeof(SListNode));
  20. assert(pNewNode);
  21. pNewNode->data=data;
  22. pNewNode->pNext=NULL;
  23. return pNewNode;
  24. }
  25. //打印函数
  26. void Print(SListNode *pFirst)
  27. {
  28. SListNode *pNode;
  29. for (pNode=pFirst; pNode; pNode=pNode->pNext) {
  30. printf("%d -> ", pNode->data);
  31. }
  32. printf("NULL\n");
  33. }
  34. // 销毁
  35. void SListDestroy(SListNode **ppFirst)
  36. {
  37. assert(ppFirst !=NULL);
  38. SListNode *pNode, *pNext;
  39. pNode=*ppFirst;
  40. while (pNode !=NULL) {
  41. pNext=pNode->pNext;
  42. free(pNode);
  43. pNode=pNext;
  44. }
  45. *ppFirst=NULL;
  46. }
  47. // 查找,返回遇到的第一个
  48. // 如果找到了,返回结点地址
  49. // 否则返回 NULL
  50. SListNode * Find(SListNode *pFirst, DataType data)
  51. {
  52. SListNode *pNode;
  53. for (pNode=pFirst; pNode; pNode=pNode->pNext) {
  54. if (pNode->data==data) {
  55. return pNode;
  56. }
  57. }
  58. return NULL;
  59. }
  60. // 增删改查
  61. // 尾插
  62. void PushBack(SListNode **ppFirst, DataType data)
  63. {
  64. assert(ppFirst !=NULL);
  65. SListNode *pNewNode=CreateNewNode(data);
  66. if (*ppFirst==NULL) {
  67. *ppFirst=pNewNode;
  68. return;
  69. }
  70. SListNode *pNode;
  71. pNode=*ppFirst;
  72. while (pNode->pNext !=NULL) {
  73. pNode=pNode->pNext;
  74. }
  75. // pNode 就是倒数第一个
  76. pNode->pNext=pNewNode;
  77. }
  78. /*
  79. // 头插
  80. void PushFront(SListNode **ppFirst, DataType data)
  81. {
  82. assert(ppFirst !=NULL);
  83. SListNode *pNewNode=CreateNewNode(data);
  84. pNewNode->pNext=*ppFirst;
  85. *ppFirst=pNewNode;
  86. }
  87. // 插入到给定结点 pPos 前,pPos 肯定在链表里
  88. void Insert(SListNode **ppFirst, SListNode *pPos, DataType data)
  89. {
  90. assert(ppFirst !=NULL);
  91. SListNode *pNode;
  92. pNode=*ppFirst;
  93. // pPos 是第一个结点地址
  94. if (pPos==*ppFirst) {
  95. PushFront(ppFirst, data);
  96. return;
  97. }
  98. while (pNode->pNext !=pPos){
  99. pNode=pNode->pNext;
  100. }
  101. SListNode *pNewNode=CreateNewNode(data);
  102. pNode->pNext=pNewNode;
  103. pNewNode->pNext=pPos;
  104. }
  105. */
  106. // 头删
  107. void PopFront(SListNode **ppFirst)
  108. {
  109. assert(ppFirst !=NULL);
  110. assert(*ppFirst !=NULL);
  111. SListNode *pOldFirst=*ppFirst;
  112. *ppFirst=(*ppFirst)->pNext;
  113. free(pOldFirst);
  114. }
  115. // 尾删
  116. void PopBack(SListNode **ppFirst)
  117. {
  118. assert(ppFirst !=NULL);
  119. assert(*ppFirst !=NULL);
  120. if ((*ppFirst)->pNext==NULL) {
  121. free(*ppFirst);
  122. *ppFirst=NULL;
  123. return;
  124. }
  125. SListNode *pNode=*ppFirst;
  126. while (pNode->pNext->pNext !=NULL)
  127. {
  128. pNode=pNode->pNext;
  129. }
  130. free(pNode->pNext);
  131. pNode->pNext=NULL;
  132. }
  133. // 根据结点地址删除,结点肯定在链表里
  134. void Erase(SListNode **ppFirst, SListNode *pPos)
  135. {
  136. assert(ppFirst !=NULL);
  137. assert(*ppFirst !=NULL);
  138. if (*ppFirst==pPos) {
  139. PopFront(ppFirst);
  140. return;
  141. }
  142. SListNode *pCur;
  143. for (pCur=*ppFirst; pCur->pNext !=pPos; pCur=pCur->pNext) {
  144. }
  145. // pCur 就是 pPos的前一个
  146. pCur->pNext=pPos->pNext;
  147. free(pPos);
  148. }
  149. /*
  150. void TestSList()
  151. {
  152. SListNode *pFirst;
  153. SListInit(&pFirst);
  154. assert(pFirst==NULL);
  155. PushBack(&pFirst, 1);
  156. assert(pFirst !=NULL);
  157. Print(pFirst);
  158. PushBack(&pFirst, 1);
  159. PushBack(&pFirst, 2);
  160. PushBack(&pFirst, 3);
  161. Print(pFirst);
  162. PushFront(&pFirst, 5);
  163. PushFront(&pFirst, 8);
  164. Print(pFirst);
  165. SListNode *pFound=Find(pFirst, 3);
  166. if (pFound==NULL) {
  167. printf("没有找到\n");
  168. }
  169. else {
  170. printf("%d\n", pFound->data);
  171. Insert(&pFirst, pFound, 100);
  172. }
  173. Print(pFirst);
  174. PopFront(&pFirst);
  175. Print(pFirst);
  176. PopBack(&pFirst);
  177. Print(pFirst);
  178. SListNode *pFound=Find(pFirst, 9);
  179. { if (pFound==NULL) {
  180. printf("没有找到\n");
  181. }
  182. else {
  183. printf("%d\n", pFound->data);
  184. Erase(&pFirst, pFound);
  185. }
  186. SListDestroy(&pFirst);
  187. }
  188. }
  189. */
  190. // 根据数据去删除,删除遇到的第一个结点
  191. void Remove(SListNode **ppFirst, DataType data)
  192. {
  193. SListNode *pFound=Find(*ppFirst, data);
  194. if (pFound !=NULL) {
  195. Erase(ppFirst, pFound);
  196. }
  197. }
  198. // 根据数据去删除,删除遇到的所有结点
  199. void RemoveAll(SListNode **ppFirst, DataType data)
  200. {
  201. SListNode *pNode=*ppFirst;
  202. SListNode *pNext;
  203. while (pNode->pNext) {
  204. if (pNode->pNext->data==data) {
  205. pNext=pNode->pNext;
  206. pNode->pNext=pNode->pNext->pNext;
  207. free(pNext);
  208. }
  209. else {
  210. pNode=pNode->pNext;
  211. }
  212. }
  213. if ((*ppFirst)->data==data) {
  214. PopFront(ppFirst);
  215. }
  216. }
  217. void TestRemove()
  218. {
  219. SListNode *pFirst;
  220. SListInit(&pFirst);
  221. PushBack(&pFirst, 4);
  222. PushBack(&pFirst, 3);
  223. PushBack(&pFirst, 1);
  224. PushBack(&pFirst, 3);
  225. PushBack(&pFirst, 3);
  226. PushBack(&pFirst, 3);
  227. PushBack(&pFirst, 3);
  228. PushBack(&pFirst, 3);
  229. PushBack(&pFirst, 5);
  230. PushBack(&pFirst, 3);
  231. Print(pFirst);
  232. Remove(&pFirst, 3);
  233. Print(pFirst);
  234. RemoveAll(&pFirst, 3);
  235. Print(pFirst);
  236. }

[html] view plain copy

  1. main.c
  2. #include"Hello.h"
  3. int main(){
  4. TestRemove();
  5. //TestSList();
  6. system("pause");
  7. }

到此,单链表的基本功能差不多都实现了。

本命名规范

index.css: 一般用于首页建立样式

head.css: 头部样式,当多个页面头部设计风格相同时使用。

base.css: 共用样式。

style.css:独立页面所使用的样式文件。

global.css:页面样式基础,全局公用样式,页面中必须包含。

layout.css:布局、版面样式,公用类型较多时使用,一般用在首页级页面和产品类页面中

module.css:模块,用于产品类页,也可与其它样式配合使用。

master.css:主要的样式表

columns.css:专栏样式

themes.css:主体样式

forms.css:表单样式

mend.css:补丁,基于以上样式进行的私有化修补。

页面结构命名:

page:代表整个页面,用于最外层。

wrap:外套,将所有元素包在一起的一个外围包,用于最外层

wrapper:页面外围控制整体布局宽度,用于最外层

container:一个整体容器,用于最外层

head,header:页头区域,用于头部

nav: 导航条

content:内容,网站中最重要的内容区域,用于网页中部主体

main:网站中的主要区域(表示最重要的一块位置),用于中部主体内容

column:栏目

sidebar:侧栏

foot,footer:页尾、页脚。网站一些附加信息放置区域,(或命名为 copyright)用于底部

导航命名:

nav, navbar, navigation, nav-wrapper:导航条或导航包,代表横向导航

topnav:顶部导航

mainbav:主导航

subnav:子导航

sidebar:边导航

leftsidebar 或 sidebar_a:左导航

rightsidebar 或 sidebar_b:右导航

title:标题

summary:摘要

menu:菜单,区域包含一般的链接和菜单

submenu:子菜单

drop:下拉

dorpmenu:下拉菜单

links:链接菜单

功能命名:

logo:标记网站logo标志

banner:标语、广告条、顶部广告条

login:登陆,(例如登录表单:form-login)

loginbar:登录条

register:注册

tool, toolbar:工具条

search:搜索

searchbar:搜索条

searchlnput:搜索输入框

shop:功能区,表示现在的

icon:小图标

label:商标

homepage:首页

subpage:二级页面子页面

hot:热门热点

list:文章列表,(例如:新闻列表:list-news)

scroll:滚动

tab:标签

sitemap:网站地图

msg 或 message:提示信息

current:当前的

joinus:加入

status:状态

btn:按钮,(例如:搜索按钮可写成:btn-search)

tips:小技巧

note:注释

guild:指南

arr, arrow:标记箭头

service:服务

breadcrumb:(即页面所处位置导航提示)

download:下载

vote:投票

siteinfo:网站信息

partner:合作伙伴

link, friendlink:友情链接

copyright:版权信息

siteinfoCredits:信誉

siteinfoLegal:法律信息