#include
#define
MAXSIZE
100
struct
List
{
int
L[MAXSIZE];
int
top;
};
int
Init()//top指针初始化为0
{
int
top;
top=0;
return
top;
}
void
Input(struct
List
t,int
p,int
n)//输入n个数据
{
if(n==0||n>=MAXSIZE)printf("空队列\n");
else
for(p=0;p
L[p]);
}
void
Output(struct
List
s,int
i,int
m)//输出m(=n)个数据哈
{
if(m==0||m>=MAXSIZE)printf("无法输出\n");
else
for(i=0;i
L[i]);
}
void
main()
{
struct
List
r;
int
n,m;
scanf("%d",&n);
m=Init();
Input(&r,m,n);
Output(&r,0,n);
}
#include<stdioh>
#define MAXSIZE 100
struct List
{
int L[MAXSIZE];
int top;
};
int Init()//top指针初始化为0
{
int top;
top=0;
return top;
}
void Input(struct List t,int p,int n)//输入n个数据
{
if(n==0||n>=MAXSIZE)printf("空队列\n");
else
for(p=0;p<n;p++)
scanf("%d",&t->L[p]);
}
void Output(struct List s,int i,int m)//输出m(=n)个数据哈
{
if(m==0||m>=MAXSIZE)printf("无法输出\n");
else
for(i=0;i<m;i++)
printf("%d ",s->L[i]);
}
void main()
{
struct List r;
int n,m;
scanf("%d",&n);
m=Init();
Input(&r,m,n);
Output(&r,0,n);
}
完整的程序,用链表:
//---------------------------------------------------------------------------
#include <stdioh>
#include <stdlibh>
typedef struct node{
int id;
double score;
struct node next;
} node,list;
void init(list a,list b) /创建两个原链表/
{
double score[]={70,85,75,90,60,80,76,50};
list now,ne;
int i=0;
b=a=NULL;
for (i = 0; i<8; i++) {
ne=(list )malloc(sizeof(node));
ne->id=i+1;
ne->score=score[i];
ne->next=NULL;
if (i<4) {
if (!a) a=now=ne;
else{
now->next=ne;
now=ne;
}
}
else{
if (!b) b=now=ne;
else{
now->next=ne;
now=ne;
}
}
}
}
void sort(list a) /链表按成绩升序排序/
{
list t,k;
int tid;
double tsc;
while (a->next)
{
k=a;
for (t=a->next; t; t=t->next) {
if (t->score<k->score) {
k=t;
}
}
if (k!=a) {
tid=a->id;
a->id=k->id;
k->id=tid;
tsc=a->score;
a->score=k->score;
k->score=tsc;
}
a=a->next;
}
}
list merge(list a,list b) /合并两个链表a和b,并返回合并后的新链表/
{
list rt=NULL,n=NULL,now=NULL;
while (a&&b)
{
n=(list )malloc(sizeof(node));
n->next=NULL;
if (a->score<=b->score) {
n->id=a->id;
n->score=a->score;
a=a->next;
}
else {
n->id=b->id;
n->score=b->score;
b=b->next ;
}
if (!rt) {
rt=now=n;
}
else{
now->next=n;
now=n;
}
}
while (a)
{
n=(list )malloc(sizeof(node));
n->next=NULL;
n->id=a->id;
n->score=a->score;
now->next=n;
now=n;
a=a->next ;
}
while (b)
{
n=(list )malloc(sizeof(node));
n->next=NULL;
n->id=b->id;
n->score=b->score;
now->next=n;
now=n;
b=b->next;
}
return rt;
}
void view(list a) /输出链表的内容/
{
if (a) {
printf("%d:%g\n",a->id,a->score); /按 学号:成绩 的格式输出/
view(a->next);
}
}
void Free(list a) /释放空间,删除链表/
{
if (a->next) Free(a->next);
free(a);
}
int main(void) /测试/
{
list a,b,c;
init(&a,&b);
sort(a);
sort(b);
c=merge(a,b);
view(c); /输出合并后的链表/
Free(a);
Free(b);
Free(c);
return 0;
}
//---------------------------------------------------------------------------
以上就是关于在C语言中,如何构造一个空的顺序线性表,然后怎么用全部的内容,包括:在C语言中,如何构造一个空的顺序线性表,然后怎么用、在C语言中,如何构造一个空的顺序线性表,然后怎么用、c语言 线性表(急)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)