创建创建一个顺序表,要求如下: 1、创建一个顺序表,其数据元素类型为整型; 2、运行过程中,从键盘输入

创建一个顺序表,要求如下:
1、创建一个顺序表,其数据元素类型为整型;
2、运行过程中,从键盘输入数据;
4、倒序输出整个顺序表。
例如:顺序表为:22,44,11,88
输出为: 88,11,44,22

#include<stdio.h>

struct SQList/*定义顺序表每个元素的结构*/
{
int data;
struct SQList * next;
};

struct SQList * SQInsert(struct SQList * list)/*插入一个元素*/
{
struct SQList * temp = list;/*临时保存原先的list*/
list = (struct SQList *)malloc(sizeof(struct SQList));/*新建一个元素*/

printf("data:");/*提示输入*/
scanf("%d", &(list->data) );/*将输入数值放到新元素中*/
list->next = temp;/*将新元素和原先的顺序表串接起来, 成为一个新的顺序表*/
printf("\n");
return list;/*返回新顺序表*/

}

void SQPrint(struct SQList * list)
{
struct SQList * temp = list;/*用temp打印输出, 以免破坏顺序表*/
while(temp != NULL)/*元素不为空则一直打印*/
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}

void main()
{
struct SQList * list = NULL;
char select;

while(1)
{
printf("I:Insert, P: Print.\n");
printf("please select:");
select = getchar();/*select记录用户的选择, 在下面的switch时做判断使用*/
/*需要添加功能的话也很容易, 只要在下面的switch中添加一个case就可以, 比如加入一个删除功能, 可以case 'D': SQDelete(list), 然后在main前面编辑这个SQDelete函数就可以啦, 再在前面的输入提示那里显示D: delete就更完善啦*/
switch(select)
{
case 'I':
list = SQInsert(list);
break;
case 'P':
SQPrint(list);
break;
default:
printf("invalid input.\n\n");
break;
}
getchar();/*清除输入的回车*/
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
#include<iostream>
using namespace std;
#define SIZE_MAX 50
typedef struct{
int array[SIZE_MAX];
int size;
}SeqList;
int main()
{
SeqList q;
int m;
cout<<"输入顺序表中存储元素的个数:";
cin>>m;
q.size=m;
for(int i=0;i<q.size;i++)
cin>>q.array[i];
for(int i=q.size-1;i>=0;i--)
cout<<q.array[i]<<" ";
return 0;
}
很简单的写了段代码,看看能不能满足你的要求~~,可以追加更新本回答被网友采纳
第2个回答  2011-03-10
建一个数组模拟栈,先入栈,在出栈