如何给网站做301重定向,河北邢台有几个区县,轮播网站,wordpress 弹出层链表分为单链表、双链表和循环链表#xff0c;这些理论知识在笔记中自然写了#xff0c;这里我只写出其中的实现#xff1a;
单链表的实现
#include stdio.h
#include stdlib.h
#include string.h typedef struct Book {char bookname[20];char a…链表分为单链表、双链表和循环链表这些理论知识在笔记中自然写了这里我只写出其中的实现
单链表的实现
#include stdio.h
#include stdlib.h
#include string.h typedef struct Book {char bookname[20];char author[10];
}Book;typedef struct Node {Book book;struct Node *next;
}Node,*LinkList;//初始化链表
void initChainedTable(Node **L){ //ok*L(LinkList)malloc(sizeof(Node));(*L)-nextNULL;
}
//尾结点插入
Node* putNodeByTail(Book book,Node *r){ //okNode *node(Node*)malloc(sizeof(Node));node-book book;node-nextNULL;r-nextnode;return node;
}
//首节点插入
void putNodeByHead(Book book,LinkList L){ //okNode *node(Node*)malloc(sizeof(Node));node-bookbook;node-nextL-next;L-nextnode;
}
//删除其中一个结点
void deleteNode(int i,LinkList L){ //okNode *nodeL-next;int counter1;if (i 1) {if (node ! NULL) {L-next node-next;free(node);} else {printf(List is empty, cannot delete.\n);}return;}while(nodecounter(i-1)){nodenode-next;counter;}if(!node||i0){printf(index is out of bound \n);}else{Node* delnode node-next;if (delnode) {node-next delnode-next;free(delnode);} else {printf(Node at index %d does not exist\n, i);}}}
//向链表中插入元素
void insertNode(Book book,int i,LinkList L){ //okNode *newnode(Node*)malloc(sizeof(Node));Node *nodeL-next;newnode-bookbook;int count1;while(nodecount(i-1)){nodenode-next;count;}if(!node||i0){printf(index is out of bound\n);}else{newnode-nextnode-next;node-nextnewnode; }}
//判断链表是否为空
int isEmpty(LinkList L){ //okreturn L-nextNULL?1:0;
} //获取第i个结点
Node* getNode(int i,LinkList L){ //okNode* nodeL-next;int count1;while(nodecounti){nodenode-next;count;}if(nodei0) return node;printf(index is out of bound\n);
}
//通过值获取到它的位置
int getIndex(Book book,LinkList L){ //okNode* nodeL-next;int count1;while(nodestrcmp(node-book.author,book.author)strcmp(node-book.bookname,book.bookname)){nodenode-next;count;}if(node) return -1;return count;
}
//打印链表中的数据
void printNodeData(LinkList L){ //okNode *nodeL-next;while(node){printf(bookname:%s;author:%s\n,node-book.bookname,node-book.author);nodenode-next;}if(!node) printf(你所给的是个空链表\n);
}
//释放一个链表
void freeChainedTable(LinkList L){ Node *pL-next;Node *q;while(p){ qp-next;free(p);pq; }printf(清除完成\n);L-nextNULL;
}int main(){LinkList L;initChainedTable(L);Book book1{java,zhangyu};Book book2{php,zhang};Book book3{c#,nanchengyu};putNodeByHead(book1,L);putNodeByHead(book2,L);putNodeByHead(book3,L);Book book4{java,zhang};freeChainedTable(L);printNodeData(L);system(pause);return 0;
}
双链表的实现
#include stdio.h
#include stdlib.h//这个源文件描述的是不循环双向链表typedef struct Book {char bookname[20];char author[10];
}Book;
typedef struct doLinkList{Book book;struct doLinkList *prior,*next;struct doLinkList *ele;
}Node,*LinkList;
//初始化链表
void initDoLinkList(LinkList *L){*L(LinkList)malloc(sizeof(Node));(*L)-priorNULL;(*L)-nextNULL;(*L)-ele*L;
}
//向链表添加结点
void putNode(Book book,Node *listNode){Node *node(Node*)malloc(sizeof(Node));node-bookbook;listNode-ele-nextnode;node-priorlistNode-ele;node-nextNULL;listNode-elenode;
}
//打印结点数据
void printNodeData(LinkList list){if(!list-next){printf(你所给的是个空链表\n); return; } Node *nodelist-next;while(node){printf(bookname:%s;author:%s\n,node-book.bookname,node-book.author);nodenode-next;}
}
//查找链表数据
Node* getNode(int i,LinkList list){Node *nodelist-next;int counter1;while(nodecounter!ii0){nodenode-next;counter;}if(i0||icounter){printf(索引超出范围\n);return NULL;}return node;
}//删除链表结点
void delNode(int i,LinkList list){Node *p;if(!(pgetNode(i,list))){printf(并没有找到该节点\n);}else if(p-next){p-prior-nextp-next;p-next-priorp-prior;}else{p-prior-nextNULL;}free(p);} //向双向节点中插入结点末尾节点不可以插入
void insertNode(int i,Book book,LinkList list){Node *p;Node *node(Node*)malloc(sizeof(Node));node-bookbook;if(pgetNode(i,list)){p-prior-nextnode;node-priorp-prior;node-nextp;p-priornode;}else {printf(插入失败\n);}
} int main(){LinkList L;initDoLinkList(L);Book book1{java,zhangyu};Book book2{php,zhang};Book book3{c#,nan};putNode(book1,L);putNode(book2,L);
// putNode(book3,L);insertNode(2,book3,L);printNodeData(L);system(pause);return 0;
}
循环链表的实现
#include stdio.h
#include stdlib.h//这个源代码设计的是循环链表包括设计的尾指针两个循环链表的组合但是链表的其他操作我们在这就不去写了
// 设计这个尾指针的目的是在对表的首尾部分进行操作的时候可以降低时间复杂度
typedef struct Book {char bookname[20];char author[10];
}Book;typedef struct Node{Book book;struct Node *next;
}Node;typedef struct LoopLinkList{Node *headNode;Node *tailNode;
} *LoopList;
//初始化循环列表
void initLoopLinkList(LoopList *L){ //okNode *headNode(Node*)malloc(sizeof(Node));*L(LoopList)malloc(sizeof(LoopList));(*L)-headNodeheadNode;(*L)-tailNodeheadNode;
}
//向循环链表中添加结点
void putNode(Book book,LoopList L){ //okNode *node(Node*)malloc(sizeof(Node));node-bookbook;L-tailNode-nextnode;L-tailNodenode;node-nextL-headNode;
}//将第二个循环链表添加到第一个循环链表后
LoopList connectTable(LoopList L1,LoopList L2){ //0kL1-tailNode-nextL2-headNode-next;free(L2-headNode);L2-tailNode-nextL1-headNode;L1-tailNodeL2-tailNode;return L1;
}//打印链表中的数据
void printNodeData(LoopList L){ //okNode *nodeL-headNode-next;while(node!L-headNode){printf(bookname:%s;author:%s\n,node-book.bookname,node-book.author);nodenode-next;}if(!node) printf(你所给的是个空链表\n);
}
//获取循环列表的长度
int getSize(LoopList L){ //okNode *nodeL-headNode-next;int counter0;while(L-headNode!L-tailNodenode!L-headNode){nodenode-next;counter;}return counter;
}int main(){LoopList L;initLoopLinkList(L);Book book1{java,zhangyu};Book book2{php,zhang};Book book3{c#,nan};putNode(book1,L);putNode(book2,L);putNode(book3,L);printf(表1\n);printNodeData(L);LoopList L2;initLoopLinkList(L2);Book book4{jaa,hangyu};Book book5{ph,zhng};Book book6{c,an};putNode(book4,L2);putNode(book5,L2);putNode(book6,L2);printf(表2\n);printNodeData(L2);LoopList listconnectTable(L,L2);printf(连接后的表\n);printNodeData(list);system(pause);return 0;
}补充能不能实现循环双链表这样循环有意义吗或者说这种数据结构有其特点和优势吗有的话可以设计一下 文章转载自: http://www.morning.rwlns.cn.gov.cn.rwlns.cn http://www.morning.cbnjt.cn.gov.cn.cbnjt.cn http://www.morning.tbqdm.cn.gov.cn.tbqdm.cn http://www.morning.rxlk.cn.gov.cn.rxlk.cn http://www.morning.frcxx.cn.gov.cn.frcxx.cn http://www.morning.grryh.cn.gov.cn.grryh.cn http://www.morning.mtsck.cn.gov.cn.mtsck.cn http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.kfstq.cn.gov.cn.kfstq.cn http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.redhoma.com.gov.cn.redhoma.com http://www.morning.xtkw.cn.gov.cn.xtkw.cn http://www.morning.mlzyx.cn.gov.cn.mlzyx.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.nzkkh.cn.gov.cn.nzkkh.cn http://www.morning.gbfck.cn.gov.cn.gbfck.cn http://www.morning.tldfp.cn.gov.cn.tldfp.cn http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn http://www.morning.wqsjx.cn.gov.cn.wqsjx.cn http://www.morning.wfysn.cn.gov.cn.wfysn.cn http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn http://www.morning.hxrfb.cn.gov.cn.hxrfb.cn http://www.morning.plqqn.cn.gov.cn.plqqn.cn http://www.morning.wdnkp.cn.gov.cn.wdnkp.cn http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn http://www.morning.wfqcs.cn.gov.cn.wfqcs.cn http://www.morning.pnjsl.cn.gov.cn.pnjsl.cn http://www.morning.lqws.cn.gov.cn.lqws.cn http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn http://www.morning.zxybw.cn.gov.cn.zxybw.cn http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn http://www.morning.tllws.cn.gov.cn.tllws.cn http://www.morning.bpmtz.cn.gov.cn.bpmtz.cn http://www.morning.mlckd.cn.gov.cn.mlckd.cn http://www.morning.hlkxb.cn.gov.cn.hlkxb.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn http://www.morning.rmrcc.cn.gov.cn.rmrcc.cn http://www.morning.yhpq.cn.gov.cn.yhpq.cn http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn http://www.morning.gkpgj.cn.gov.cn.gkpgj.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.nwfxp.cn.gov.cn.nwfxp.cn http://www.morning.mxptg.cn.gov.cn.mxptg.cn http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn http://www.morning.drjll.cn.gov.cn.drjll.cn http://www.morning.crfjj.cn.gov.cn.crfjj.cn http://www.morning.sggzr.cn.gov.cn.sggzr.cn http://www.morning.sgpnz.cn.gov.cn.sgpnz.cn http://www.morning.tmpsc.cn.gov.cn.tmpsc.cn http://www.morning.wmdlp.cn.gov.cn.wmdlp.cn http://www.morning.rhpy.cn.gov.cn.rhpy.cn http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn http://www.morning.mdlqf.cn.gov.cn.mdlqf.cn http://www.morning.hmbtb.cn.gov.cn.hmbtb.cn http://www.morning.fgsct.cn.gov.cn.fgsct.cn http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.qjbxt.cn.gov.cn.qjbxt.cn http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn http://www.morning.rkjz.cn.gov.cn.rkjz.cn http://www.morning.gslz.com.cn.gov.cn.gslz.com.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn http://www.morning.rnngz.cn.gov.cn.rnngz.cn http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn http://www.morning.pdkht.cn.gov.cn.pdkht.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.tynqy.cn.gov.cn.tynqy.cn http://www.morning.llxqj.cn.gov.cn.llxqj.cn http://www.morning.gqddl.cn.gov.cn.gqddl.cn http://www.morning.fbccx.cn.gov.cn.fbccx.cn http://www.morning.phxdc.cn.gov.cn.phxdc.cn