结构体链表
来源:互联网 发布:欧美经典犯罪电影知乎 编辑:程序博客网 时间:2024/06/15 03:32
今天写了一下结构体链表,相比顺序链表而言,要相对复杂,但其中没有合并操作,以后在写,这个结构体链表不够成熟,但相对简单的操作还是可行的,下面是代码:
//结构体实现聊表//提供如下操作 1制空(Making_empty),2判空(Is_empty),4插入(Insert_sag),5查找(Search_sag),6删除(Delete_sag),8退出(exit),7合并(Connect_two_sag)#include <stdio.h>#include <stdlib.h>typedef int data_type;typedef struct Por{data_type data;struct Por *next;}sag,*sag_head;void Making_empty(sag *&);bool Is_empty(sag *&);void Insert_sag(sag *&,data_type);void Search_sag(sag *&,data_type);void Delete_sag(sag *&,data_type);//void Connect_two_sag(sag *,sag *,sag *);int main(){sag_head head=NULL;data_type data;while(true){printf("选择你的命令:\n \ 1-------制空 \n \ 2-------插入 \n \ 3-------查找 \n \ 4-------删除 \n \ 5-------合并 \n \ 6-------退出 \n");int trag;scanf("%d",&trag);switch(trag){case 1: Making_empty(head);break;case 2: printf("print you wanted data: \n");scanf("%d",&data);Insert_sag(head,data);break;case 3:printf("print your searching data: \n");scanf("%d",&data);Search_sag(head,data);break;case 4:printf("print your deleting data: \n");scanf("%d",&data);Delete_sag(head,data);break;case 5://Connect_two_sag(head1,head2,head);break;case 6:printf("are you really want to exit Y(y) / N(n)\n");char ch;getchar();ch=getchar();while(ch==' ' && ch!=EOF)ch=getchar();switch(ch){case 'Y': case 'y':exit(0);case 'N': case 'n':printf("\n");break;} break;default:printf("wrong,enter the new operating number\n");}}}void Making_empty(sag *&p){ sag_head q=p; while(q!=NULL){ p=p->next; free(q); q=p; }}bool Is_empty(sag *&p){return p==NULL;}void Insert_sag(sag *&p,data_type x){sag_head q=(sag_head)malloc(sizeof(*q));q->data=x;//printf("%d\n",q->data);sag_head pre=NULL,cur=p;for( ; cur!=NULL && cur->data<q->data;pre=cur,cur=cur->next);if(pre==NULL){q->next=p;p=q;//printf("%d\n",p->data);return ;}pre->next=q;q->next=cur;}void Search_sag(sag *&p,data_type x){//printf("%d\n",);int i=1;for(sag_head q=p;q!=NULL;q=q->next,i++)if(q->data==x){printf("exists in %d\n",i);return ;}printf("no exists\n");}void Delete_sag(sag *&p,data_type x){if(Is_empty(p)){printf("sag empty! \n");return ;}sag_head pre=NULL,cur=p;for( ;cur->data!=x && cur!=NULL;pre=cur,cur=cur->next);if(pre==NULL){p=p->next;free(cur);return ;}if(cur==NULL){printf("%d no exist in sag\n",&x);return ;}pre->next=cur->next;free(cur);}
- 结构体链表
- 结构体链表
- 结构体链表
- 结构体链表实现源码
- 入门结构体链表
- oj0068学生结构体链表
- 【c++程序】结构体链表
- Day8.结构体链表
- C/C++结构体链表
- 结构体链表小结
- c 结构体链表形式
- 学生结构体链表
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- Oracle数据库备份与恢复特性浅谈
- 大数据技术概览----读《大数据管理:概念、技术与挑战》(孟小峰 慈祥著)
- VisualNet在资源管理中的应用
- 字符串排序
- Tablespace与Datafile 的 ONLINE/OFFLINED的区别
- 结构体链表
- hdu 1045 Fire Net
- U盘制作WINXP启动盘
- MFC创建多级目录
- AirPlay、DLNA、Miracast三大无线技术介绍
- Lesson3: 简单绘图
- 钳位电路
- 在IIS8添加WCF服务支持
- MFC删除多级目录