版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 线性表的存储结构及各种运算的实现#include "stdio.h"#include "stdlib.h"#define listsize 100typedef struct int datalistsize; int length;Seqlist;void main() void createlist(Seqlist *l,int n); void printlist(Seqlist *l,int n)
2、; void locateElem(Seqlist *l,int n); void listinsert(Seqlist *l,int i,int n); void listdelete(Seqlist *l,int i,int n); int n; int i=0; Seqlist l; l.length=0;
3、; printf("请输入线性表长度:"); scanf("%d",&n); createlist(&l,n); printlist(&l,n); locateElem(&l,n); listinsert(&l,i,n); listdelete(&l,i,n)
4、; printf("n");/新建顺序表void createlist(Seqlist *l,int n) int i; printf("请输入顺序表元素:n"); for(i=0;i<n;i+) scanf("%d",&l->datai);
5、; l->length=n; /输出顺序表void printlist(Seqlist *l,int n) int i; printf("顺序表为:"); for(i=0;i<n;i+) printf("%d ",l->datai);&
6、#160; /查找元素void locateElem(Seqlist *l,int n) int i=1,*p; p=l->data; printf("n请输入要查找的元素n:"); scanf("%d",&n); while(i<=l->length&&(*p+!=n) +i;
7、; if(i<=l->length) printf("要查找的数的位置为:%d",i);/插入元素void listinsert(Seqlist *l,int i,int n) int *q,*p; printf("n请输入要插入的数:"); scanf("%d",&n); if(l->length=0)
8、160; l->data0=n; +l->length; q=&(l->data0); while(*q<=n)&&(q<=&(l->datal->length-1) &
9、#160; +q; +l->length; for(p=&(l->datal->length-1);p>=q;-p) *(p+1)=*p; *p=n; printf("输出新表:n"
10、;); for(i=0;i<l->length;i+) printf("%d ",l->datai); /删除元素void listdelete(Seqlist *l,int i,int n) int *p,*q;
11、0; printf("n请输入要删除的数的位置:"); scanf("%d",&i); if(i<1|i>l->length) printf("删除元素失败!"); p=&l->datai-1; n=*p;
12、60; q=l->data+l->length-1; for(+p;p<=q;+p) *(p-1)=*p; -l->length; for(i=0;i<l
13、->length+1;i+) printf("%d ",l->datai); 2,单链表#include <stdio.h>#include <stdlib.h>typedef struct linklist int nDate; struct linklist *next;Linklist;/链表输出void output(Linklist *head) Linklist *p = head
14、->next; while(NULL != p) printf("%d ", p->nDate); p = p->next; printf("rn");/链表建立Linklist* creat() Linklist *head = NULL, *p = NULL, *s = NULL; int Date = 0, cycle = 1; head = (Linklist*)malloc(sizeof(Linklist); if(NULL = head) printf("分配内存失败咯n"); return NULL;
15、head->next = NULL; p = head; printf("请输入数据且当输入数据为0时结束输入n"); while(cycle) scanf("%d", &Date); if(0 != Date) s = (Linklist*)malloc(sizeof(Linklist); if(NULL = s) printf("分配内存失败n"); return NULL; s->nDate = Date; p->next = s; p = s; else cycle = 0; p->next =
16、 NULL; return(head);/测试链表长度void length(Linklist *head) Linklist *p = head->next; int j=0; while(NULL != p) p = p->next; j+; printf("%drn", j);/查找void research_Date(Linklist *head, int date) Linklist *p; int n=1; p = head->next; while(NULL != p && date != p->nDate) p = p
17、->next; +n; if(NULL = p) printf("没找到你要的值(>_<)"); else if(date = p->nDate) printf("要查找的值%d在链表中第%d个位置n", date, n); return;/按序号查找void research_Number(Linklist *head, int Num) Linklist *p=head; int i = 0; while(NULL != p && i < Num) p = p->next; i+; if(p = N
18、ULL) printf("查找位置不对n"); else if(i = 0) printf("查找位置为头结点n"); else if(i = Num) printf("第%d个位置数据为%drn", i, p->nDate); /在指定元素之前插入新结点void insert_1(Linklist *head, int i, int Newdate) Linklist *pre = head, *New = NULL; int j = 0; while(NULL != pre && j < i-1) pr
19、e = pre->next; j+; if(NULL = pre | j > i-1) printf("插入位置不存在n"); else New = (Linklist*)malloc(sizeof(Linklist); if(NULL = New) printf("分配内存失败咯n"); return; New->nDate = Newdate; New->next = pre->next; pre->next = New; /在指定元素之后插入新结点void insert_2(Linklist *head, int
20、 i, int Newdate) Linklist *pre = head, *New = NULL; int j = 0; while(NULL != pre->next && j < i) pre = pre->next; j+; if(j = i) New = (Linklist*)malloc(sizeof(Linklist); if(NULL = New) printf("分配内存失败n"); return; New->nDate = Newdate; New->next = pre->next; pre->
21、;next = New; else printf("插入位置不存在n"); /删除指定结点void Delete_1(Linklist *head, int i3) Linklist *p = head, *pre = NULL; int j = 0; while(NULL != p && j < i3) pre = p; p = p->next; j+; if(NULL = p) printf("删除位置不存在n"); else pre->next = p->next; free(p); /指定删除单链表中某个数
22、据,并统计删除此数据的个数int Delete_2(Linklist *head, int Delete_date) int count = 0; Linklist *p = head, *q; while(NULL != p->next) q = p->next; if(q->nDate = Delete_date) p->next = q->next; free(q); +count; else p = q; return count;/链表逆置void Reverse_list(Linklist *head) Linklist *q, *s; if(NULL
23、 = head->next | NULL = head->next->next) return; q = head->next->next; head->next->next = NULL; while(NULL != q) s = q->next; q->next = head->next; head->next = q; q = s; /单链表的连接void connect_list(Linklist *head, Linklist *head_New) Linklist *p = head; while(NULL != p
24、->next) p = p->next; p->next = head_New->next;void destroy_list(Linklist* head) while (NULL != head) Linklist* temp = head; head = head->next; free(temp); void main()int m; int date, num; int i3; /指定删除元素的位置 int i1, i2, Newdate_1, Newdate_2; /待插入的新数据 int Delete_date, k; Linklist *Head
25、= NULL; /定义头结点 Linklist *Head_New = NULL; printf("*单链表的各项操作*n"); printf("1.单链表的建立t"); printf("2.测试单链表的长度tn"); printf("3.按值查询t"); printf("4.按序查询tn"); printf("5.前插t"); printf(" 6.后插tn"); printf("7.按序删除t"); printf("8.按
26、值删除tn"); printf("9.单链表的逆置t"); printf("10.单链表的链接tn"); printf("*n");loop:printf("请输入1到10之间的数字,以回车结束,未建立单链表时请先选择1:"); scanf("%d",&m); switch(m) case 1:printf("您选择的是链表的建立:");goto loop1;break; case 2:printf("您选择的是测试单链表的长度:");g
27、oto loop2;break; case 3:printf("您选择的是按值查询:");goto loop3;break; case 4:printf("您选择的是按序查询:");goto loop4;break; case 5:printf("您选择的是前插:");goto loop5;break; case 6:printf("您选择的是后插:");goto loop6;break; case 7:printf("您选择的是按序删除:");goto loop7;break; case 8:
28、printf("您选择的是按值删除:");goto loop8;break; case 9:printf("您选择的是单链表的逆置:");goto loop9;break; case 10:printf("您选择的是单链表的链接:");goto loop10;break; /链表建立loop1: Head = creat(); printf("输出建立的单链表n"); output(Head); goto loop; /单链表测长loop2: printf("单链表长度为n"); length(
29、Head); goto loop; /链表按值查找loop3: printf("请输入待查找的数据n"); scanf("%d", &date); research_Date(Head, date);goto loop; /链表按序号查找loop4: printf("请输入待查找序号n"); scanf("%d", &num); research_Number(Head, num); goto loop;loop5: printf("在指定第i个元素之前插入新元素Newdate"); printf("请输入i与元素且以逗号间隔n"); scanf("%d,%d", &i1, &Newdate_1); insert_1(Head, i1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上半年吉林通化市事业单位招聘应征入伍高校毕业生备考题库及答案详解(必刷)
- 2026山东济南高新区龙奥大厦附近小学招聘派遣制小学数学代课老师1人备考题库带答案详解(b卷)
- 2026广东深圳医学科学院感染免疫课题组招聘备考题库附参考答案详解(综合题)
- 行业员工手册企业文化与规章制度
- 我国银行业金融机构强制退市法律问题探究:现状、困境与破局之路
- 我国金融体系系统性风险剖析与多元协同治理机制构建研究
- 幼儿园食品安全管理制度
- 《五石之瓠》教案
- 快乐的一次运动会事件作文(14篇)
- 企业内外部沟通渠道搭建及协作管理平台介绍
- 2024-2025学年山东省菏泽市成武县某中学高二上学期开学考试英语试卷(解析版)
- 2025全国注册监理工程师继续教育考试题库及参考答案
- “无废医院”建设指引
- 篮球比赛应急预案及措施
- 2025-2030卫星互联网星座组网进度与地面终端兼容性报告
- 医院功能科年终总结
- 医院科室整改前后对比
- 2024年QC课题(提升办案现场执法效率)专卖监督管理科
- 青光眼病人的健康宣教
- 海外机械设备管理制度
- 弘扬教育家精神:新时代教师的使命与担当
评论
0/150
提交评论