单链表各项操作(绝对无错)

上传人:汽*** 文档编号:470048336 上传时间:2023-07-13 格式:DOC 页数:12 大小:51.50KB
返回 下载 相关 举报
单链表各项操作(绝对无错)_第1页
第1页 / 共12页
单链表各项操作(绝对无错)_第2页
第2页 / 共12页
单链表各项操作(绝对无错)_第3页
第3页 / 共12页
单链表各项操作(绝对无错)_第4页
第4页 / 共12页
单链表各项操作(绝对无错)_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《单链表各项操作(绝对无错)》由会员分享,可在线阅读,更多相关《单链表各项操作(绝对无错)(12页珍藏版)》请在金锄头文库上搜索。

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); void locateElem(Seqlist *l,int n); void listinsert(Seqlist *l,int i,int n); void listdelete(Se

2、qlist *l,int i,int n); int n; int i=0; Seqlist l; l.length=0; printf(请输入线性表长度:); scanf(%d,&n); createlist(&l,n); printlist(&l,n); locateElem(&l,n); listinsert(&l,i,n); listdelete(&l,i,n); printf(n);/新建顺序表void createlist(Seqlist *l,int n) int i; printf(请输入顺序表元素:n); for(i=0;idatai); l-length=n; /输出顺序表

3、void printlist(Seqlist *l,int n) int i; printf(顺序表为:); for(i=0;idatai); /查找元素void locateElem(Seqlist *l,int n) int i=1,*p; p=l-data; printf(n请输入要查找的元素n:); scanf(%d,&n); while(ilength&(*p+!=n) +i; if(ilength) printf(要查找的数的位置为:%d,i);/插入元素void listinsert(Seqlist *l,int i,int n) int *q,*p; printf(n请输入要插

4、入的数:); scanf(%d,&n); if(l-length=0) l-data0=n; +l-length; q=&(l-data0); while(*q=n)&(qdatal-length-1) +q; +l-length; for(p=&(l-datal-length-1);p=q;-p) *(p+1)=*p; *p=n; printf(输出新表:n); for(i=0;ilength;i+) printf(%d ,l-datai); /删除元素void listdelete(Seqlist *l,int i,int n) int *p,*q; printf(n请输入要删除的数的位置

5、:); scanf(%d,&i); if(il-length) printf(删除元素失败!); p=&l-datai-1; n=*p; q=l-data+l-length-1; for(+p;plength; for(i=0;ilength+1;i+) printf(%d ,l-datai); 2,单链表#include #include typedef struct linklist int nDate; struct linklist *next;Linklist;/链表输出void output(Linklist *head) Linklist *p = head-next; whil

6、e(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; head-next = NULL; p = head; printf(请输入数据且当输入数据为0时结束输入n); wh

7、ile(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 = NULL; return(head);/测试链表长度void length(Linklist *head) Linklist *p = head-next; int j=0; while(NULL != p) p = p-nex

8、t; 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-next; +n; if(NULL = p) printf(没找到你要的值(_nDate) printf(要查找的值%d在链表中第%d个位置n, date, n); return;/按序号查找void research_Number(Linklist *head, int Num) Linklist

9、*p=head; int i = 0; while(NULL != p & i next; i+; if(p = NULL) 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 nex

10、t; 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 i, int Newdate) Linklist *pre = head, *New = NULL; int j =

11、0; while(NULL != pre-next & j next; j+; if(j = i) New = (Linklist*)malloc(sizeof(Linklist); if(NULL = New) printf(分配内存失败n); return; New-nDate = Newdate; New-next = pre-next; pre-next = New; else printf(插入位置不存在n); /删除指定结点void Delete_1(Linklist *head, int i3) Linklist *p = head, *pre = NULL; int j = 0; while(NULL != p & j next; j+; if(NULL = p) printf(删除位置不存在n); else pre-next = p-next; free(p);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号