/*
GY52122008
请输入插入字符 : -
请输入插入位置 : 7
GY5212-2008
Press any key to continue
*/
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#include #include #include #define maxsize 100 typedef struct { char *data; int length;}sqlist; void initlist(sqlist *&L) { //初始化顺序表 L = (sqlist *)malloc(sizeof(sqlist)); L->data = (char *)malloc(maxsize); L->length = 0;}void createlist(sqlist *&L,char a[],int n) { //建立顺序表 int i; for(i = 0;i < n;i++) L->data[i] = a[i]; L->length = n;}bool listinsert(sqlist *&L,int i,char e) { //插入数据元素 int j; if(i < 1 || i > L->length + 1) return false; i--; for(j = L->length;j > i;j--) L->data[j] = L->data[j - 1]; L->data[i] = e; L->length++; return true;}bool listdelete(sqlist *&L,int i,char &e) { //删除数据元素 int j; if(i < 1 || i> L->length) return false; i--; e = L->data[i]; for(j = 1;j < L->length - 1;j++) L->data[j] = L->data[j + 1]; L->length--; return true;}int listlength(sqlist *L) { //求线性表长度 return(L->length);}void destroylist(sqlist *&L) { free(L);}int locateelem(sqlist *L,char e) { //按元素查找 int i = 0; while(i < L->length && L->data[i] != e) i++; if(i >= L->length) return 0; else return i + 1;}void displist(sqlist *L) { //输出线性表 int i; for(i = 0;i < L->length;i++) printf("%c",L->data[i]); printf("\n");} int main() { int pos,len; char ch,data[50] = "GY52122008"; sqlist *L; initlist(L); // 先初始化 len = strlen(data); createlist(L,data,len); // 创建表 displist(L); printf("请输入插入字符 : "); scanf("%c",&ch); printf("请输入插入位置 : "); scanf("%d",&pos); if(listinsert(L,pos,ch)) displist(L); else printf("插入操作失败。\n"); free(L->data); free(L); return 0;}