推荐几个网站,wordpress 中文tag,wordpress不同分类使用不同模板,怎么找网站开发公司1. makefile——#xff08;注意#xff1a;双向无头链表第一个节点的pre为空#xff0c;最后一个节点的next为空#xff09; 单向无头链表只能找到后一个节点、双向无头链表前后节点都能找到
OBJ:doulink
OBJSmain.c doublelink.c
CClgcc$(OBJ):$(OBJS)$(CC) $^ -o $
.PH…1. makefile——注意双向无头链表第一个节点的pre为空最后一个节点的next为空 单向无头链表只能找到后一个节点、双向无头链表前后节点都能找到
OBJ:doulink
OBJSmain.c doublelink.c
CClgcc$(OBJ):$(OBJS)$(CC) $^ -o $
.PHONY:
clean:rm $(OBJ)
test:valgrind --toolmemcheck --leak-checkfull ./$(OBJ)2. doublelink.h
#ifndef _DOUBLELINK_H_
#define _DOUBLELINK_H_typedef struct stu
{int id;char name[32];int score;
}DataType;typedef struct node
{DataType data;struct node *ppre;struct node *pnext;
}DouNode;typedef struct list
{DouNode *phead;int clen;
}DouList;extern DouList *create_dou_link();
extern int is_empty_dou_link(DouList *plist);
extern int push_head_dou_link(DouList *plist, DataType data);
extern void dou_link_for_each(DouList *plist, int dir);
extern int push_tail_dou_link(DouList *plist, DataType data);
extern int pop_head_dou_link(DouList *plist);
extern int pop_tail_dou_link(DouList *plist);
extern DouNode *find_name(DouList *plist, char *pname);
extern int modify_score(DouList *plist, char *pname, int pscore);
extern void destory_dou_link(DouList *plist);#endif
3. doublelink.c
#include doublelink.h
#include stdio.h
#include stdlib.h
#include string.hDouList *create_dou_link()//创建标签
{DouList *plist NULL;plist (DouList *)malloc(sizeof(DouList));if (NULL plist){perror(fail to malloc);return NULL;}plist-phead NULL;plist-clen 0;return plist;
}int is_empty_dou_link(DouList *plist)//判断空链表
{if (NULL plist-phead){return 1;}return 0;
}int push_head_dou_link(DouList *plist, DataType data)//头插
{DouNode *pnode NULL;pnode malloc(sizeof(DouNode));if (NULL pnode){perror(fail to malloc);return -1;}pnode-data data;pnode-ppre NULL;pnode-pnext NULL;if (is_empty_dou_link(plist))//空链表直接插{plist-phead pnode;}else{pnode-pnext plist-phead;plist-phead-ppre pnode;plist-phead pnode;}plist-clen;return 0;
}void dou_link_for_each(DouList *plist, int dir)//两种方式遍历链表1顺序遍历打印 0逆序遍历打印
{if (is_empty_dou_link(plist)){return;}DouNode *ptmp plist-phead;if (dir)//顺序遍历打印{while (ptmp){printf(%d %s %d\n, ptmp-data.id, ptmp-data.name, ptmp-data.score);ptmp ptmp-pnext;}}else//逆序遍历打印{while (ptmp-pnext)//走到末尾{ptmp ptmp-pnext;}while (ptmp){printf(%d %s %d\n, ptmp-data.id, ptmp-data.name, ptmp-data.score);ptmp ptmp-ppre;}}printf(\n);
}int push_tail_dou_link(DouList *plist, DataType data)//头插
{DouNode *p NULL;DouNode *pnode NULL;pnode malloc(sizeof(DouNode));if (NULL pnode){perror(fail to malloc);return -1;}pnode-data data;pnode-ppre NULL;pnode-pnext NULL;if (is_empty_dou_link(plist))//空链表直接插{plist-phead pnode;}else{ p plist-phead;while (p-pnext ! NULL){p p-pnext;}p-pnext pnode;pnode-ppre p;}plist-clen;return 0;
}int pop_head_dou_link(DouList *plist)//头删
{if (is_empty_dou_link(plist))//空链表直接结束程序{return -1;}DouNode *pfree NULL;pfree plist-phead;plist-phead pfree-pnext;//标签指向第二个节点首地址if (plist-phead ! NULL)//判断是否空链表{plist-phead-ppre NULL;//将第二个节点的ppre变为NULL}free(pfree);plist-clen--;return 0;
}int pop_tail_dou_link(DouList *plist)//尾删
{if (is_empty_dou_link(plist))//空链表程序结束{return -1;}DouNode *pfree NULL;pfree plist-phead;while (pfree-pnext)//指针指向最后一个节点{pfree pfree-pnext;}if (pfree-ppre ! NULL)//链表有两个以上节点{pfree-ppre-pnext NULL;}else //链表只有一个节点{plist-phead NULL;}free(pfree);plist-clen--;return 0;
}DouNode *find_name(DouList *plist, char *pname)//寻找name
{DouNode *ptmp NULL;ptmp plist-phead;while (ptmp ! NULL){if (!strcmp(pname, ptmp-data.name)){return ptmp;}ptmp ptmp-pnext;}return NULL;
}int modify_score(DouList *plist, char *pname, int pscore)//修改分数
{DouNode *ptmp NULL;ptmp find_name(plist, pname);if (ptmp ! NULL){ptmp-data.score pscore;return 0;}return -1;
}void destory_dou_link(DouList *plist)//链表摧毁
{while (!is_empty_dou_link(plist)){pop_head_dou_link(plist);}free(plist);
}4. main.c
#include stdio.h
#include stdlib.h
#include doublelink.hint main(void)
{DataType stus[] {{1, doinb, 100},{2, lwx, 67},{3, lqs, 99},{4, tian, 98},{5, gimgoon, 78},{6, xinyi, 88},{7, nuguri, 99},{8, khan, 77},{9, bo, 94},{10, xiaolaohu, 60}};DouNode *ptmpnode NULL;DouNode *pnamepnode NULL;int ret_modify 0;int i 0;int new_score[] {100, 99, 98, 97, 96, 95, 94, 93, 92, 91};DouList *plist create_dou_link();//表头创建if (NULL plist){return -1;}for (i 0; i sizeof(stus) / sizeof(stus[0]); i)//给链表中插入结构体中的所有内容{push_tail_dou_link(plist, stus[i]);//尾插}dou_link_for_each(plist, 1);dou_link_for_each(plist, 0);#if 0for (i 0; i sizeof(stus)/sizeof(stus[0]); i)//遍历查找{pnamepnode find_name(plist, stus[i].name);if (pnamepnode ! NULL){printf(find node );printf(%d , pnamepnode-data.id);printf(%s , pnamepnode-data.name);printf(%d\n, pnamepnode-data.score);}else{printf(not find this node\n);}}
#endif#if 0for (i 0; i sizeof(stus)/sizeof(stus[0]); i)//遍历修改{ret_modify modify_score(plist, stus[i].name, new_score[i]);if (-1 ret_modify){perror(fail to modify_score\n);}}dou_link_for_each(plist, 1);dou_link_for_each(plist, 0);
#endif#if 0for (i 0; i sizeof(stus) / sizeof(stus[0]); i)//测试头删{pop_head_dou_link(plist);//尾删dou_link_for_each(plist, 1);dou_link_for_each(plist, 0);}
#endif destory_dou_link(plist);//销毁return 0;
}2. 程序注意 1. 指针遍历 1操作此指针 if (ptmp ! NULL){ptmp ptmp-pnext;} 2指针指向链表节点末尾 if (ptmp-pnext ! NULL){ptmp ptmp-pnext;}
文章转载自: http://www.morning.qghjc.cn.gov.cn.qghjc.cn http://www.morning.cnfjs.cn.gov.cn.cnfjs.cn http://www.morning.hrjrt.cn.gov.cn.hrjrt.cn http://www.morning.tmfhx.cn.gov.cn.tmfhx.cn http://www.morning.dysgr.cn.gov.cn.dysgr.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn http://www.morning.pxspq.cn.gov.cn.pxspq.cn http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn http://www.morning.cybch.cn.gov.cn.cybch.cn http://www.morning.klyzg.cn.gov.cn.klyzg.cn http://www.morning.rykmz.cn.gov.cn.rykmz.cn http://www.morning.mjzgg.cn.gov.cn.mjzgg.cn http://www.morning.khclr.cn.gov.cn.khclr.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.nywrm.cn.gov.cn.nywrm.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.jkbqs.cn.gov.cn.jkbqs.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.vnuwdy.cn.gov.cn.vnuwdy.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.kclkb.cn.gov.cn.kclkb.cn http://www.morning.rhfbl.cn.gov.cn.rhfbl.cn http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn http://www.morning.qbkw.cn.gov.cn.qbkw.cn http://www.morning.knzdt.cn.gov.cn.knzdt.cn http://www.morning.krtky.cn.gov.cn.krtky.cn http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn http://www.morning.prgyd.cn.gov.cn.prgyd.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.qxjck.cn.gov.cn.qxjck.cn http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn http://www.morning.wmyqw.com.gov.cn.wmyqw.com http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.pwggd.cn.gov.cn.pwggd.cn http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn http://www.morning.rtlth.cn.gov.cn.rtlth.cn http://www.morning.zfgh.cn.gov.cn.zfgh.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.zydr.cn.gov.cn.zydr.cn http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn http://www.morning.rszbj.cn.gov.cn.rszbj.cn http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn http://www.morning.lynkz.cn.gov.cn.lynkz.cn http://www.morning.fywqr.cn.gov.cn.fywqr.cn http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.ppllj.cn.gov.cn.ppllj.cn http://www.morning.jygsq.cn.gov.cn.jygsq.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.jzfxk.cn.gov.cn.jzfxk.cn http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn http://www.morning.lbssg.cn.gov.cn.lbssg.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn http://www.morning.rfyk.cn.gov.cn.rfyk.cn http://www.morning.ptdzm.cn.gov.cn.ptdzm.cn http://www.morning.ylqrc.cn.gov.cn.ylqrc.cn http://www.morning.vattx.cn.gov.cn.vattx.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.bpkqd.cn.gov.cn.bpkqd.cn http://www.morning.cftkz.cn.gov.cn.cftkz.cn http://www.morning.ngcw.cn.gov.cn.ngcw.cn http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn