【数据结构基础】顺序表
来源:互联网 发布:淘宝转化率如何计算 编辑:程序博客网 时间:2024/05/01 21:43
前言 :
大一学习c语言时,接触到数据结构的单链表,当时觉得太难了(现在也觉得好难)。特别是在c语言期末课程设计时,当时指针、结构体还没掌握。在寝室里一会用vc6++跑跑,一会Dev c++跑跑,花了大约两天时间独立完成学生成绩管理系统的,用qq传了好多份给同组的同学,当时很用成就感,就像中学时花了好长时间解决了一道数学难题。突然有一种爸比天下第一的感觉,见谁都想抱抱!哈哈。特自负。今年大二,我很水的大学,开设了数据结构这门课程,我下定决心好好学习这门课程,每天早起,占前排。现在花点时间用博客记录自己的学习收获,当成是自己的课后复习的学习笔记吧!
顺序表知识点
1.1 初始化一个顺序表 Init_seqList
1.2 删除一项数据元素 Delete_seqList
1.3 检索一项数据元素 Location_seqList
1.4 插入一项数据元素 Insert_seqList
1.1 Init_seqList
#include<stdio.h>typedef struct node { int date[10]; int length;}seqList, *PseqList;//下面的所有操作都以该结构体为栗子。PseqList Init_seqList(void) { PseqList pl; pl = (PseqList)malloc(sizeof(seqList)); if (pl) { pl->length = 0; } return pl;}
1.2 Delete_seqList
int Delete_seqList(PseqList pl,int i) {//pl指向创建的顺序表,i表示要删除的位置 if (!pl) { printf("表不存在"); return(-1); } if (i<1 || i> pl->length) { printf("删除位置不合法"); return (0); } for (int j = i; j < pl->length;j++) { pl->date[j] = pl->date[j + 1]; } pl->length--; return 1;}int Location_seqList(PseqList pl, int num) { for (int i = 0; i < pl->length; i++) { if (pl->date[i] == num) return i; }}
1.3 Location_seqList
int Location_seqList(PseqList pl, int num) { for (int i = 0; i < pl->length; i++) { if (pl->date[i] == num) return i; }}
1.4 Insert_seqList
Insert_seqList(PseqList pl, int x,int y) { int i; if (!pl) { return -2; } if (pl->length > MAXSIZE) { printf("表溢出"); } if (x<1 || x>pl->length) { printf("插入位置不合法"); return 0; } for (i = pl->length-1;i>x-1; i--) { pl->date[i + 1] = pl->date[i]; } pl->date[x] =y; pl->length++;}
1.5 code
#include<stdio.h>#define MAXSIZE 6typedef struct node { int date[MAXSIZE]; int length;}seqList, *PseqList;PseqList Init_seqList(void) { PseqList pl; pl = (PseqList)malloc(sizeof(seqList)); if (pl) { pl->length =6; } printf("初始化为:"); for (int i = 0; i < pl->length; i++) { pl->date[i] =i; printf("%d", pl->date[i]); } printf("\n"); return pl;}PseqList Delete_seqList(PseqList pl,int i) {//pl指向创建的顺序表,i表示要删除的位置 if (!pl) { printf("表不存在"); } if (i<1 || i> pl->length) { printf("删除位置不合法"); } for (int j = i; j < pl->length-1;j++) { pl->date[j] = pl->date[j + 1]; } pl->length--; printf("删除后为:"); for (int i = 0; i < pl->length; i++) { printf("%d", pl->date[i]); } printf("\n"); return pl;}int Location_seqList(PseqList pl, int num) { for (int i = 0; i < pl->length; i++) { if (pl->date[i] == num) return i; }}int Insert_seqList(PseqList pl, int x,int y) {//x表示插入的位置,y表示插入的数字 int i; if (!pl) { return -2; } if (pl->length > MAXSIZE) { printf("表溢出"); } if (x<1 || x>pl->length) { printf("插入位置不合法"); return 0; } for (i = pl->length-1;i>x-1; i--) { pl->date[i + 1] = pl->date[i]; } pl->date[x] = y; pl->length++; printf("\n"); printf("插入后:"); for (int j = 0; j < pl->length; j++) { printf("%d", pl->date[j]); } printf("\n"); return 1;}void main() { PseqList P=Init_seqList(); Delete_seqList(P,3); int location = Location_seqList(P,5); printf("location=%d位", location); Insert_seqList(P,1,6);}
code修改后的…
#include<stdio.h>#include<stdlib.h>#include<time.h>#define size 20typedef struct node{ int data[size]; int length;}Lnode,*Pnode;//初始化顺序表Pnode Init_Seqlist(void){ Pnode H; H=(Pnode)malloc(sizeof(Lnode)); if(H){ H->length=0; } return H;}//新建顺序表Pnode Build_Seqlist(Pnode H,int len){ if(len<=0 || len>=20){ printf("新建的链表长度不合法."); return H; } for(int i=0;i<len;i++){ H->data[i]=rand()%100+1; H->length++; } return H;}//求顺序表已用长度void Length_Seqlist(Pnode H){ printf("%d\n",H->length);} //打印顺序表void Print_Seqlist(Pnode H){ for(int i=0;i<H->length;i++){ printf("%d ",H->data[i]); } printf("\n"); }//查找数据项int Find_Seqlist(Pnode H,int num){ for(int i=0;i<H->length;i++){ if(num==H->data[i]){ return i; } } return -1;}//删除数据项(按位置)Pnode Delete_Seqlist(Pnode H,int position){ if(position<0 || position>=H->length){ printf("删除的位置不合法\n"); return H; } for(int i=position;i<H->length-1;i++){ H->data[i]=H->data[i+1]; } H->length--; return H;}//添加数据项 (按位置)Pnode Insert_Seqlist(Pnode H,int position,int num){ if(H->length>size){ printf("表已溢出\n"); return H; } if(position<0 || position>=H->length){ printf("插入的位置不合法\n"); return H; } for(int i=H->length-1;i>=position-1;i--){ H->data[i+1]=H->data[i]; } H->data[position]=num; H->length++; return H;}int main(void){ Pnode H; srand(time(NULL)); H=Init_Seqlist();//初始化 H=Build_Seqlist(H,rand()%10+1);//新建 printf("初始化新建为:\n"); Print_Seqlist(H);//打印 //查找某项数据项 // int position=Find_Seqlist(H,rand()%100+1);// if(position<0){// printf("没找到\n"); // }else{// printf("找到的位置为:%d",position);// } // printf("------------------"); printf("删除后:\n"); H=Delete_Seqlist(H,rand()%10); Print_Seqlist(H);//打印 printf("插入后:\n"); H=Insert_Seqlist(H,rand()%10,rand()%100+1); Print_Seqlist(H);//打印 return 0;}
1 0
- 【数据结构基础】顺序表
- 基础数据结构——顺序线性表
- 数据结构基础1_顺序表
- Java基础数据结构——链表与顺序表
- 数据结构之链表与顺序表(基础)
- 一、数据结构基础之顺序表C语言实现
- 一步一步复习数据结构和算法基础-索引顺序表查找
- hrbust1545 基础数据结构——顺序表(2)
- 【数据结构基础】线性表的顺序存储结构
- 基础数据结构:顺序表、链表——Python实现
- 数据结构基础(4)顺序表.链表.栈
- 数据结构之 顺序表
- 数据结构--顺序线性表
- 数据结构---顺序表
- 数据结构之顺序表
- 数据结构顺序表
- 数据结构顺序表
- 顺序表(数据结构)
- Xshell登录不显示登录名框
- 《Head first设计模式》学习笔记 – 适配器模式
- nginx下配置域名
- 多线程下HashMap的put方法失效
- 【leetcode 44】 Wildcard Matching 【正确算法】
- 【数据结构基础】顺序表
- Device Tree(三):代码分析
- OpenCV实现车牌识别,OCR分割,ANN神经网络
- 最好的安排
- curl命令学习
- ionic按模块加载
- 编程:确定两串乱序同构Java
- Android studio 中使用svn
- Android性能优化