链表
来源:互联网 发布:unity3d 节点 编辑:程序博客网 时间:2024/06/06 05:47
数据结构链表
//consts.h
#include<string.h>#include<malloc.h>#include<stdlib.h>#include<stdio.h>#include<limits.h>#include<io.h>#include<math.h>#include<process.h>#define TRUR 1#define FALSE 0#define OK 1#define ERROR -1#define INFEASIBLE -1
//linklist.h
#ifndef MY_H_FILE #define MY_H_FILE #include"consts.h"#endif typedef char DataType;typedef struct node{ DataType data; struct node *next;}LinkedList;
//linklist.cpp
#ifndef MY_LCPP_FILE #define MY_LCPP_FILE #include"linklist.h"#endif void InitLlist(LinkedList *L){ L->next=NULL;}int GetLListLength(LinkedList *L){ LinkedList *p; int j; p=L->next; j=0; while(p!=NULL) { p=p->next; j++; } return j;}LinkedList *GetLListElem(LinkedList *L,int i){ int j; LinkedList *p; p=L; j=0; while((p->next!=NULL)&&(j<i)) { p=p->next; j++; } if(i=j) { return p; } else return NULL;}LinkedList *LocateLListElem(LinkedList *L,DataType key){ LinkedList *p; p=L->next; while(p!=NULL) { if(p->data!=key) { p=p->next; } else break; } return p;}int InsertLList(LinkedList *L,int i,DataType x){ LinkedList *pre,*s; int k; pre=L; k=0; while(pre!=NULL && k<i-1) { pre=pre->next; k=k+1; } if(!pre) { printf("插入位置不合理"); return ERROR; } s=(LinkedList*)malloc(sizeof(LinkedList)); s->data=x; s->next=pre->next; pre->next=s; return OK;}int DeleteLList(LinkedList *L,int i,DataType *e){ LinkedList *pre,*r; int k; pre=L; k=0; while(pre->next!=NULL && k<i-1) { pre=pre->next; k++; } if(!(pre->next)) { printf("删除的位置不合理"); return ERROR; } r=pre->next; pre->next=pre->next->next; *e=r->data; free(r); printf("成功删除结点"); return OK;}LinkedList *CreateLListR(){ char ch; LinkedList *head,*s,*r; head=(LinkedList*)malloc(sizeof(LinkedList)); r=head; ch=getchar(); while(ch!='$') { s=(LinkedList*)malloc(sizeof(LinkedList)); s->data=ch; r->next=s; r=s; ch=getchar(); } r->next=NULL; return head;}void PrintLList(LinkedList *q){ LinkedList *p; p=q->next; printf("字符单链表结果是:\n"); while(p!=NULL) { printf("%5c",p->data); p=p->next; } printf("\b\n");}int main(){ LinkedList *a,*p; int length,node,i,j; char value,q; printf("\t输入字符串,以$结束:\n"); a=CreateLListR(); PrintLList(a); length=GetLListLength(a); printf("该表长度为:%d\n",length); printf("请输入取第几个结点:\n"); scanf("%d",&node); p=GetLListElem(a,node); if(p==NULL) printf("表中没有该节点\n"); else printf("该节点的数据域为:%c\n",p->data); printf("请输入要插入的位置和值:\n"); scanf("%d",&i); getchar(); scanf("%c",&value); InsertLList(a,i,value); PrintLList(a); printf("请输入要删除的位置\n"); scanf("%d",&j); DeleteLList(a,j,&q); PrintLList(a); return 0;}
阅读全文
0 0
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 关于k近邻法的研究
- Eclipse常用快捷键——个人总结
- 进程间通信(二)
- xml和json数据交换合适的优缺
- flask-sqlAlchemy 创建表
- 链表
- css页面展示时间和超时提醒
- Linux性能评测工具之一:gprof篇
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)完成安装
- Java设计模式百例
- 关于 Notice: Undefined index: 2 in C:\wamp\www\...报错
- iOS开发之复制粘贴 剪切
- 多线程编程
- Boostrap-datetimepicker 日期时间选择器————时间制约