考研期间对数据结构基本代码的复习
#include<stdio.h> #define maxsize 10 #define ERROR 0 #define TRUE 1 typedef bool status; //构造一个线性表 typedef struct { int length; int data[maxsize]; }SqList; //初始化顺序表 void initList(SqList &L) { L.length=0; } //求顺序表的长度 int getLength(SqList L) { return L.length; } //在线性表中插入元素 int insertElem(SqList &L,int p,int e) { int i; if(p<0 || p>L.length||L.length==maxsize) return 0; for(i=L.length-1;i>=p;--i) L.data[i+1]=L.data[i]; L.data[p]=e; ++(L.length); return 1; } //在线性表中删除元素 bool deletenum(SqList &L,int loc) { int i; //当删除元素的位置不合法时 if(loc<0 || loc>L.length) return 0; for(i=loc;i<L.length;i++) L.data[i-1]=L.data[i]; --(L.length); return 1; } // void reverselist(SqList &L) { int i; int temp; for(i=0;i<L.length/2;i++) { temp =L.data[i]; L.data[i]=L.data[L.length-1-i]; L.data[L.length-1-i]=temp; } } //输出线性表的元素 void printfs(SqList L) { int i; for(i=0;i<L.length;i++) { printf("%d ",L.data[i]); } } //查找给定元素值的位置 int returnlocate(SqList L,int num){ int i; for(i=0;i<L.length;i++) if(L.data[i] == num) return i+1;//找到的话返回下标 return -1;//没找到返回-1 } //在线性表中给定位置查找元素 int getElem(SqList L,int i) { //查找的元素超过L的长度或者小于l if(i<0 ||i>L.length) return 0; else return L.data[i-1]; } void main() { SqList L; int choose; for(;;){//在外层加上一个死循环 防止switch语句执行一次后跳出 printf("1.初始化顺序表\n"); printf("2求顺序表的长度\n"); printf("3.取出表中的元素\n"); printf("4.在顺序表中插入元素\n"); printf("5.删除顺序表中的元素\n"); printf("6.顺序表的按值查找\n"); printf("7.将顺序表中的元素翻转\n"); printf("8.输出顺序表中的元素\n"); printf("请输入您的操作\n"); scanf("%d",&choose); switch(choose){ case 1: initList(L); break; case 2: printf("顺序表的长度是%d\n",getLength(L)); break; case 3: int numlocate; printf("请输入要查找的元素的位置\n"); scanf("%d",&numlocate); printf("%d",getElem(L,numlocate)); break; case 4: int num,number; int o; printf("请输入插入元素的数\n"); scanf("%d",&num); for(o=0;o<num;o++) { scanf("%d",&number); insertElem(L,L.length,number); } break; //删除线性表中存在的元素 case 5: printf("请输入需要删除的元素的位置\n"); int loc; scanf("%d",&loc); deletenum(L, loc); printf("删除后的线性表为\n"); printfs(L); break; //顺序表的按值查找 case 6: int shu; printf("请输入需要查找的值,程序将会返回该值的位置\n"); scanf("%d",&shu); printf("%d",returnlocate(L,shu)); break; //将顺序表中的元素翻转 case 7: reverselist(L); break; //输出顺序表的元素 case 8: printfs(L); printf("\n"); break; } } }
本科的时候没好好理解数据结构 考研的专业课开始 又重新翻阅 才发现当时的自己的肤浅
对此段代码有疑问的欢迎给我留言