在C语言中,如何构造一个空的顺序线性表,然后怎么用

在C语言中,如何构造一个空的顺序线性表,然后怎么用,第1张

#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语言 线性表(急)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9761223.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存