c/c++语言开发共享C单链表的实现代码教程

slistnode.h #ifndef _slistnode_h_ #define _slistnode_h_ #include #include #include #include

slistnode.h

  #ifndef _slistnode_h_  #define _slistnode_h_  #include  #include  #include  #include  #include    typedef int datatype;    typedef struct slistnode   {   	struct slistnode* _next;   	datatype _data;   }slistnode;    slistnode* init();  slistnode* buyslistnode(datatype x);   void slistprint(slistnode* phead);   void slistdestory(slistnode** pphead);     void slistpushback(slistnode** pphead, datatype x);   void slistpopback(slistnode** pphead);   void slistpushfront(slistnode** pphead, datatype x);   void slistpopfront(slistnode** pphead);   slistnode* slistfind(slistnode* phead, datatype x);   void slistinsert(slistnode** pphead, slistnode* pos, datatype x);   void slisterase(slistnode** pphead, slistnode* pos);     void test1();  void test2();  #endif

slistnode.c

  #include"slistnode.h"    //初始化  slistnode* init(){  	slistnode* head = (slistnode *)malloc(sizeof(slistnode));  	head->_next=null;  	return head;  }    //创建一个结点  slistnode* buyslistnode(datatype x){  	slistnode *node = (slistnode *)malloc(sizeof(slistnode));  	node->_data=x;  	node->_next=null;  	return node;  }    //打印单链表  void slistprint(slistnode* phead){    	slistnode* cur;  	assert(phead);  	cur = phead->_next;  	while(cur){  		printf("%d ",cur->_data);  		cur=cur->_next;  	}  	printf("n");  }    //销毁  void slistdestory(slistnode** pphead){  	slistnode *cur,*t;  	assert(pphead);  	cur = *pphead;  	while(cur){  		t = cur->_next;  		free(cur);  		cur = t;  	}  }    //尾插;  void slistpushback(slistnode **pphead, datatype x){  	  	slistnode *newnode = buyslistnode(x);  	slistnode *cur;  	assert(pphead);  	cur=*pphead;  	while(cur->_next){  		cur=cur->_next;  	}  	cur->_next=newnode;  }    //尾出  void slistpopback(slistnode** pphead){  	slistnode *cur,*pr;  	if((*pphead)->_next==null){  		printf("表空n");  		return;  	}  	pr=cur=*pphead;  	assert(pphead);  	while(cur->_next){  		pr = cur;  		cur=cur->_next;  	}  	free(cur);  	pr->_next=null;  }    void slistpushfront(slistnode** pphead, datatype x){  	slistnode *head,*newnode;  	assert(pphead);  	head = *pphead;  	newnode = buyslistnode(x);  	newnode->_next = head->_next;  	head->_next=newnode;    }  void slistpopfront(slistnode** pphead){  	slistnode *head,*temp;  	assert(pphead);  	if((*pphead)->_next==null){  		printf("空表n");  		return;  	}    	temp = head = *pphead;  	temp = temp->_next;  	head->_next = temp->_next;  	free(temp);  }    slistnode* slistfind(slistnode* phead, datatype x){  	slistnode* cur;  	assert(phead);  	cur = phead;  	while(cur){  		if(cur->_data==x){  			printf("zhaodaolen");  			return cur;  		}  		cur = cur->_next;  	}  	return null;  }    void slistinsert(slistnode** pphead, slistnode* pos, datatype x){  	slistnode *cur,*pr,*newnode;  	newnode = buyslistnode(x);  	assert(pphead);  	assert(pos);  	pr = cur = *pphead;  	while(cur&&cur!=pos){  		pr = cur;  		cur = cur->_next;  	}  	if(cur){  		newnode->_next = cur;  		pr->_next = newnode;  	}  }    void slisterase(slistnode** pphead, slistnode* pos){  	slistnode *cur,*pr;  	assert(pphead);  	assert(pos);  	pr = cur = *pphead;  	while(cur&&cur!=pos){  		pr = cur;  		cur = cur->_next;  	}  	pr->_next = cur->_next;  	free(cur);  }      void test1(){  	slistnode *list=init();  	slistpushback(&list,1);  	slistpushback(&list,2);  	slistpushback(&list,3);  	slistpushback(&list,4);  	slistpushback(&list,5);  	slistprint(list);  	slistpopback(&list);  	slistpopback(&list);  	slistpopback(&list);  	slistpopback(&list);  	slistpopback(&list);  	slistpopback(&list);  	slistprint(list);  	slistdestory(&list);  }  void test2(){  	slistnode *node;  	slistnode *list=init();  	slistpushfront(&list,1);  	slistpushfront(&list,2);  	slistpushfront(&list,3);  	slistpushfront(&list,4);  	slistpushfront(&list,5);  	slistprint(list);  	slistpopback(&list);  	slistpopback(&list);  	slistpopback(&list);  	slistprint(list);  	node=slistfind(list,5);  	if(node){  		printf("%d n",node->_data);  	}  	slistinsert(&list,node,6);  	slistinsert(&list,node,7);  	slistinsert(&list,node,8);  	slistprint(list);  	node=slistfind(list,6);  	slisterase(&list,node);  	slistprint(list);    	slistpopfront(&list);  	slistpopfront(&list);  	slistpopfront(&list);  	slistpopfront(&list);  	slistpopfront(&list);  	slistprint(list);    }    

main.c

  #include"slistnode.h"    int main(){  	test1();  	system("pause");  	return 0;  }  

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607347.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐