- 论坛徽章:
- 0
|
非常感谢楼上的朋友
帮我解决了这个问题
下面我将我的这个例子打出来,供大家参考
其中应用到了whyglinux
提供的这个算法
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 100
- #define NULL 0
- struct list /*定义顺序表存储结构*/
- {int data_list[MAX];
- int last;
- };
- typedef struct list LIST;
- LIST createlist(void) /*创建顺序表*/
- {LIST sqlist;
- int i,x,ret;
- printf("\n****此步操作为输入顺序表的长度******************** ");
- printf("\n****注意如果你输入的为非int类型,将自动重新输入****\n");
- do {
- printf("在这里输入长度---->>> " );
- ret = scanf( "%d", &sqlist.last );
- while ( getchar() != '\n' );
- } while ( ret != 1 );
- fflush(stdin);
- printf("\n↓请输入顺序表的数据<int型>↓\n");
- for(i=1;i<=sqlist.last;i++)
- {printf("输入第%d个数据:",i);
- scanf("%d",&x);
- sqlist.data_list[i]=x;
- }
- return(sqlist);
- }
- void outlist(LIST l) /*输出顺序表*/
- {int i;
- printf("\n顺序表的长度:%d\n",l.last);
- printf("顺序表的数据:");
- for(i=1;i<=l.last;i++)
- printf("%d ",l.data_list[i]);
- printf("\n");
- }
- LIST inslist(LIST l,int i,int x) /*顺序表插入 i表示插入位置 x表示插入的数据*/
- {int j;
- if(l.last>MAX)
- {printf("\n顺序表已满!!\n");
- return(l);}
- else if(i<1||i>l.last)
- {printf("\n插入的位置出错!!\n");
- return(l);}
- else{
- for(j=l.last;j>=i;j--)
- l.data_list[j+1]=l.data_list[j];
- l.data_list[i]=x;
- l.last++;
- return(l);}
- }
- LIST delist(LIST l,int i) /*顺序表删除 i表示删除位置*/
- {int j;
- if(i<1||i>l.last)
- {printf("\n删除出错!!\n");
- return(l);}
- else
- {for(j=i+1;j<=l.last;j++)
- l.data_list[j-1]=l.data_list[j];
- l.last--;
- return(l);}
- }
- void main() /*实验一:顺序表的基本运算*/
- { LIST a;
- int i,x,j;
- a=createlist();
- outlist(a);
- printf("\n请输入插入位置:");
- scanf("%d",&i);
- printf("\n请输入插入数据:");
- scanf("%d",&x);
- a=inslist(a,i,x);
- outlist(a);
- printf("\n请输入删除数据的位置:");
- scanf("%d",&j);
- a=delist(a,j);
- outlist(a);
- }
-
复制代码 |
评分
-
查看全部评分
|