自打在知乎上看到思否这个平台后,就总想写点什么;也想与更多的人交流,学一点东西。
学校数据结构授课用的教材是严蔚敏老师的《数据结构(C语言版)》,教材将介于伪码和C语言之间的类C语言做为描述工具讲解算法,在实际学习中,仍是须要咱们把代码转换成C语言程序,编译经过。这个过程才能帮助更好地理解算法。
我开通博客的目的也在于此,将本身复现的代码和完成的课后习题记录下来,与你们分享交流;偶尔也分享一些本身对一些开源项目的学习理解。
第一次的内容很是简单,顺序表的基本操做。主要包括了:c++
功能简单,编译时遇到的困难也较少。算法
#include<stdio.h> #include<stdlib.h> #include "malloc.h" #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef int Status; typedef struct{ int *elem; int length; int listsize; }SqList; Status InitList_Sq(SqList &L){ //构造空表 L.elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int)); if(!L.elem)exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK; } Status ListInsert_Sq(SqList &L,int i){ //在顺序表的第i个位置插入键盘输入的数 int* p,* q,e; if(i < 1 || i > L.length + 1)return ERROR; if(L.length >= L.listsize){ int* newbase = (int*)realloc(L.elem,(L.listsize + LISTINCREMENT) * sizeof(int)); if(!newbase)exit(OVERFLOW); L.elem = newbase; L.listsize += LISTINCREMENT; } q = &(L.elem[i-1]); for(p = &(L.elem[L.length-1]);p >= q;--p) *(p+1) = *p; scanf("%d",&e); //键盘输入值赋给e *q = e; ++ L.length; return OK; } Status List_Print(SqList L){ //打印顺序表中的数 for(int r = 0;r < L.length;r++)printf("%d ",L.elem[r]); printf("\n"); } Status List_Search(SqList L){ //查找顺序表 int i; scanf("%d",&i); if(i < 1 || i > L.length + 1)return ERROR; printf("您查找的数是:%d \n",L.elem[i-1]); } Status ListDelete_Sq(SqList &L){ //删除指定的数,并用e返回 int* p,* q; int i,e; scanf("%d",&i); if(i < 1 || i > L.length + 1)return ERROR; p = &(L.elem[i-1]); e = *p; q = L.elem + L.length - 1; for(++p;p <= q;++p)*(p-1) = *p; --L.length; printf("%d被删除了\n",e); return OK; } int main() { SqList L; InitList_Sq(L); printf("请为顺序表输入4个整数:\n"); for(int a = 1;a <= 4;a++)ListInsert_Sq(L,a); printf("现有的顺序表为:\n"); List_Print(L); printf("请输入要查找的位置\n"); List_Search(L); printf("请输入插入的位置和数(用换行分开):\n"); int a; scanf("%d",&a); ListInsert_Sq(L,a); printf("现有的顺序表为:\n"); List_Print(L); printf("请输入要删除的位置\n"); ListDelete_Sq(L); printf("现有的顺序表为:\n"); List_Print(L); return 0;}
所用的编译器是dev c++.数据结构