当前位置: 首页 > wzjs >正文

做网站必须要注册公司么360站长平台

做网站必须要注册公司么,360站长平台,网站费用明细,龙岩古田一、双向链表 1.定义 双向链表是在单链表的每个结点中,再设置一个指向其钱去节点的指针域。 typedef struct DulNode {ElemType date;struct DulNode *pri;//直接前驱指针sturct DulNode *next;//直接后继指针 }DulNode,*DuLinkList;2.双向链表的创建 …

一、双向链表

1.定义

  双向链表是在单链表的每个结点中,再设置一个指向其钱去节点的指针域。

typedef struct DulNode
{ElemType date;struct DulNode *pri;//直接前驱指针sturct DulNode *next;//直接后继指针
}DulNode,*DuLinkList;

2.双向链表的创建

struct DouLinkList* CreateDouLinkList() 
{struct DouLinkList*dl = malloc(sizeof(struct DouLinkList));if(NULL == dl){fprintf(stderr, "CreatDouLinkList malloc");return NULL;}  dl->head =NULL;dl->clen = 0;return dl;  
}

3.双向链表的插入

(1)头插

int InsertHeadDouLinkList(struct DouLinkList*dl,struct DATATYPE*data)
{struct DouNode*newnode = malloc(sizeof( struct DouNode));if(NULL == newnode){fprintf(stderr, "InsertHeadDouLinkList malloc");return 1; }memcpy(&newnode->data,data,sizeof(struct DATATYPE));newnode->next = NULL;newnode->prev = NULL;newnode->next =dl->head;if(dl->head){dl->head->prev =newnode;}dl->head = newnode;dl->clen++;return 0;
}

(2)尾插

int InsertTailDouLinkList(struct DouLinkList*dl,struct DATATYPE*data)
{if(IsEmptyDouLinkList(dl)){return InsertHeadDouLinkList(dl,data);}else{   struct DouNode*tmp = dl->head;while(tmp->next){tmp = tmp->next;}struct DouNode*newnode = malloc(sizeof( struct DouNode));if(NULL == newnode){fprintf(stderr, "InsertTailDouLinkList malloc");return 1; }//初始化节点memcpy(&newnode->data,data,sizeof(struct DATATYPE));newnode->next = NULL;newnode->prev = NULL;//连接链表newnode->prev = tmp;tmp->next = newnode;dl->clen++;}return 0;
}

(3) 任意位置插

int InsertPosDouLinkList(struct DouLinkList*dl,struct DATATYPE*data,int pos)
{int len = GetSizeDouLinkList(dl);if(pos<0||pos>len){return 1;}if(0 == pos){return InsertHeadDouLinkList(dl,data);}else if(pos == len){return InsertTailDouLinkList(dl, data);}else{struct DouNode*newnode = malloc(sizeof( struct DouNode));if(NULL == newnode){fprintf(stderr, "InsertPosDouLinkList malloc");return 1; }//初始化节点memcpy(&newnode->data,data,sizeof(struct DATATYPE));newnode->next = NULL;newnode->prev = NULL;struct DouNode*tmp = dl->head;int i = 0;for(i = 0;i < pos;++i){tmp = tmp->next;}newnode->next=tmp;newnode->prev=tmp->prev;tmp->prev=newnode;newnode->prev->next=newnode;}return 0;
}

4.双向链表的遍历

int ShowDouLinkList(struct DouLinkList*dl,DIR dir)
{struct DouNode*tmp = dl->head;if(FORWADR == dir){while (tmp){printf("%s %c %d %d\n",tmp->data.name,tmp->data.sex,tmp->data.age,tmp->data.score);tmp=tmp->next;}}else if(BACKWADR == dir){while(tmp->next){tmp=tmp->next;}while(tmp){printf("%s %c %d %d\n",tmp->data.name,tmp->data.sex,tmp->data.age,tmp->data.score);tmp =tmp->prev;}}return 0;
}

5.  vi Makefile(工程管理工具) :三个.c以上可使用

方法一:

a.out(目标):main.c ./doulink (依赖)gcc main.c doulink.c//前面空一个Tab键
clean:rm a.out

 在终端敲make,进行编译,若要指定makefile ,加-f再加指定makefile

方法二:

#代表源文件
SRC += main.c(变量名任取)//指定变量
SRC += doulink.c
DST = app(可执行文件)CC = gcc//编译器
FLAG = -g
LIB = -lm$(DST):$(SRC)$(CC) $(SRC) $(FLAG) $(LIB)-o(指定名字) $(DST)
clean:rm $(DST)

6.双向链表的查找

struct DouNode * FindDouLinkList(struct DouLinkList*dl,char*name)
{if(IsEmptyDouLinkList(dl)){return NULL;}struct DouNode*tmp = dl->head;while(tmp){if(0 == strcmp(tmp->data.name,name)){return tmp;}tmp = tmp->next;}return NULL;
}

7.双向链表的修改

int ModifyDouLinkList(struct DouLinkList*dl,char*name,struct DATATYPE*data)
{struct DouNode*tmp = FindDouLinkList(dl, name);if(NULL == tmp){return 1;}memcpy(&tmp->data, data,sizeof(struct DATATYPE));return 0;
}

8.双向链表的销毁

int DestoryDouLinkList(struct DouLinkList*dl)
{while(1){struct DouNode*tmp = dl->head;if(NULL == tmp){break;}dl->head = dl->head->next;free(tmp);}free(dl);dl = NULL;return 0;
}

9.双向链表的删除

int DeleteDouLinkList(struct DouLinkList*dl,char*name)
{if(IsEmptyDouLinkList(dl)){return 1;}struct DouNode*tmp = FindDouLinkList(dl, name);if(tmp ==dl->head){dl->head =dl->head->next;tmp->next->prev = NULL;free(tmp);}else if(NULL == tmp->next){tmp->prev->next = NULL;free(tmp);}else{tmp->next->prev = tmp->prev;tmp->prev->next = tmp->next;free(tmp);}dl->clen--;return 0;
}

10.双向链表的逆序

int ReverseDouLinkList(struct DouLinkList*dl){struct DouNode*prev = NULL;struct DouNode*tmp = dl->head;struct DouNode*next = tmp->next;int len = GetSizeDouLinkList(dl);if(len < 2){return 1;}while(1){tmp->next = prev;tmp->prev = next;prev = tmp;tmp = next;if(NULL == tmp){break;}else{next = next->next;}}dl->head = prev;return 0;}

http://www.dtcms.com/wzjs/246501.html

相关文章:

  • 网站空间租赁网盘搜索引擎
  • vb.net 做网站百度推广首页
  • 网站建设推广语网店推广的作用是什么
  • 学校校园网站建设方案东莞网络公司网络推广
  • 上栗网站建设站长工具麻豆
  • 短视频seo排名加盟seo还能赚钱吗
  • qq小程序权限设置石家庄seo按天扣费
  • 多语言做网站软文发布平台排名
  • 高端网站建设品牌郑州网站建设七彩科技
  • 广州市网站制作seo外链发布技巧
  • java做网站好还是asp好百度搜一搜
  • 工程规范查询网深圳市seo网络推广哪家好
  • 网站建设全套教程发布软文网站
  • 做的网站怎样更新线上推广具体应该怎么做
  • 企业年金退休后如何领取整站排名优化公司
  • 太原建站模板源码万能软文范例800字
  • 家具家居网站建设专门代写平台
  • 长沙有哪些大公司沈阳关键词快照优化
  • 自己做的网站403seo具体怎么优化
  • 长沙有做网站的吗南宁seo外包要求
  • 网站上滚动条怎么做百度搜索推广的定义
  • 个人网站可以做企业宣传福州短视频seo网站
  • 访链家网网站开发免费网站建设哪家好
  • 食品网站app建设搜狗网址大全
  • 商机互联做网站怎么样免费网络推广软件
  • 网站链接视频怎么做西安网站搭建公司
  • 洛阳网站建设内容富阳seo关键词优化
  • 湖南郴州市旅游景点阳西网站seo
  • 加工平台苏州纳米所福州网seo
  • 专业做室内设计的网站有哪些方面百度账号怎么注册