数据结构——顺序表
来源:互联网 发布:淘宝网店打底衫长袖 编辑:程序博客网 时间:2024/05/17 23:31
顺序表的相关操作。实现了顺序表的建立,判断顺序表是否为空,顺序表的插入,顺序表的删除(下标),顺序表的查找,删除表中一元素,打印顺序表的功能。
#include<stdio.h>#include<stdlib.h>#include <windows.h>#define FALSE 0#define TRUE 1typedef int DataType;// 顺序表数据类型struct SeqList{ int MAXNUM; // 顺序表最大的容量 int n; // 顺序表中已有的元素个数 DataType *element; // 真正存放元素的其实地址};typedef struct SeqList *PSeqList;// 顺序表建立的算法,m为申请的结点个数PSeqList createNullList_seq(int m){ PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList)); if(palist != NULL) { palist->element = (DataType *)malloc(sizeof(DataType)*m); if(palist->element) { palist->MAXNUM = m; palist->n = 0; return(palist); } else { free(palist); } } printf("out of space!\n"); return NULL;}// 顺序表判空int isNullList_seq(PSeqList palist){ return(palist->n == 0);}// 顺序表插入,在下标为p的元素之前插入元素// 1.移动结点 2.插入结点 3.增加表长// 先看表空间是否已满,检查插入位置的有效性0<=p<n,注意数据的移动方向int InsertPre_seq(PSeqList palist, int p, DataType x){ int q; if (palist->n >= palist->MAXNUM) { printf("overflow"); return FALSE; } if (p<0 || p>palist->n) { printf("not exist\n"); return FALSE; } for(q=palist->n-1; q>=p; q--) palist->element[q+1] = palist->element[q]; palist->element[p] = x; palist->n = palist->n+1; return TRUE;}// 顺序表删除,删除下标为p的元素// 检查删除位置有效性 0<=p<n, 注意数据移动方向int deleteP_seq(PSeqList palist, int p){ int q; if(p<0 || p>palist->n) { printf("Not exist!\n"); return FALSE; } for(q=p; q<palist->n-1; q++) { palist->element[q] = palist->element[q+1]; } palist->n = palist->n-1; return TRUE;}// 顺序表的查找。存在返回下标,不存在返回FALSEint locate_seq(PSeqList palist, int x){ int q; for (q=0; q<palist->n; q++) { if (palist->element[q] == x) { return q; } } return FALSE;}// 删除表中一元素int deleteV_seq(PSeqList palist, DataType x){ int p, q; for(p=0; p<palist->n; p++) { q = locate_seq(palist, x); if (q) { deleteP_seq(palist, q); } } return TRUE;}// 打印顺序表void print(PSeqList palist){ int i; for(i=0; i<palist->n; i++) printf("%d\t", palist->element[i]); printf("\n");}int main(){ PSeqList lx_alist; int max,len,i,x,q; int temp; int j,k; printf("\n please input the max value(<100)of max="); scanf("%d",&max); lx_alist = createNullList_seq(max); printf("判断顺序表是否为空(1 is null): %d\n",isNullList_seq(lx_alist)); for(i=0; i<10; i++) { lx_alist->element[i] = i+1; lx_alist->n++; } printf("对数组赋初值:\n"); print(lx_alist); printf("\n修改其中一个元素的值:\n"); lx_alist->element[5] = 9; print(lx_alist); printf("\n删除刚改的元素的值:\n"); temp = 9; deleteV_seq(lx_alist, temp); print(lx_alist); printf("现在所含元素个数为:%d\n", lx_alist->n); temp = 5; printf("\n在第%d个元素前插入一个数:\n", temp); InsertPre_seq(lx_alist, temp, 11); print(lx_alist); system("pause"); return 0;}
初学数据结构,有的代码写的不是很简洁。轻喷。
0 0
- 数据结构—顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构—顺序串
- 数据结构——顺序表有序顺序表归并
- 数据结构——顺序表有序顺序表查询
- 顺序表的插入——数据结构
- c#数据结构学习——顺序表
- 数据结构的实现——顺序表
- C++数据结构——顺序表
- hdu 5884 Sort 2016ACM/ICPC青岛赛区网络赛1007
- 线程
- hibernate
- 补码加减法判断进位判断是否溢出的总结
- 网络编程
- 数据结构——顺序表
- 实验二.任务二.标准体重计算器
- GUI编程
- hdu 1992-Tiling a Grid With Dominoes
- hdu 5889 Barricade 2016ACM/ICPC青岛赛区网络赛1011
- 464.Sort Integers II-整数排序 II(容易题)
- 用Java实现简单的数据库连接池
- 数据结构——单链表的操作
- leetcode Longest Palindromic Substring(C)