这个程序里包括了对顺序表的基本操作:创建、显示、插入、删除、查找
#include<stdio.h> #define MaxLen 50 typedef int elemtype; typedef elemtype sqlist[MaxLen]; int create(sqlist A) { int i,n; printf("please input the count of element:"); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&A[i]); } return n; } void disp(sqlist A,int n) { int i; if(n==0) printf("the sequence list is empty!\n"); for(i=0;i<n;i++) printf("%d ",A[i]); printf("\n"); } /*insert num to front of number i*/ int ins(sqlist A,int n,int i,elemtype x) { int j; if(i<0 || i>n) printf("the value of i out-of rang!\n"); else { for(j=n-1;j>=i;j--) { A[j+1]=A[j]; } A[i]=x; n++; } return n; } /*delete the element of number i*/ int del(sqlist A,int n,int i) { int j; if(i<0 || i>n) printf("the value of i out-of rang!\n"); else { for(j=i-1;j<n-1;j++) A[j]=A[j+1]; n--; } return n; } /*judgment if value x exit*/ int find(sqlist A,int n,elemtype x) { int i=0; while(i<=n && A[i]!=x) { i++; } if(i<n) return 1; else return 0; }
1. typedef int elemtype;
typedef elemtype sqlist[MaxLen];
之后如果想要修改sqlist里面的值的类型,可以直接将typedef int elemtype修改为typedef long elemtype或是其他,就类似与#define一样,不过这里用c可能不太好,原答案作者给的是c++里面的输入输出语句,因为即使用了typedef,但是在scanf里面的%d还是要修改,如果用cout就不存在这个问题。
2.原文中的删除函数里面的for循环有些问题
其j循环变量的值在i-1到n-1之间,而j的正确变量范围应该是i-1到n-2之间,已经过测试。
时间: 2024-10-12 22:52:50