在第二题的基础上,输入一个年龄,如果链表中的结点包含的年龄等于此年龄,

在第二题的基础上,输入一个年龄,如果链表中的结点包含的年龄等于此年龄,
在第二题的基础上,输入一个年龄,如果链表中的结点包含的年龄等于此年龄,

第一题:建立一个线性链表,其元素值为依次从键盘输入的正整数,以输入一个非正整数为结束,然后依次输出线性链表中的各元素值。(课本P23)。

#include "stdlib.h"

#include "stdio.h"

#define null 0

#define size 6

struct node

{

int data;

struct node * next;

};

void main ()

{

struct node * head;

struct node * p,* q;

head=(struct node *)malloc(size);

p=head;

q=(struct node *)malloc(size); scanf("%d",&q->data); while (q->data!=0)

{

p->next=q;

p=q;

q=(struct node *)malloc(size); scanf("%d",&q->data);

}

p->next=null;

p=head;

while (p!=null)

{

printf("%d\n",p->data);

p=p->next;

}

}

第二题:建立一个线性链表,其元素值为:包括学号、姓名、性别、年龄等信息。并依次从键盘输入(输入时要有相应的提示)以输入0结束,然后依次输出线性链表中的各元素值。

#include"stdlib.h"

#include"stdio.h"

#define null 0

#define size 40

struct node

{

char num[6];

char name[8];

char sex[2];

int age;

struct node * next;

};

void main ()

{

int x;

struct node * head;

struct node * p,* q;

head=(struct node *)malloc(size); p=head;

printf("if exit:pleas into '0' "); scanf("%d",&x);

while (x!=0)

{

q=(struct node *)malloc(size);

printf("num\n");

scanf("%s",q->num);

printf("name\n");

scanf("%s",q->name);

printf("sex\n");

scanf("%s",q->sex);

printf("age\n");

scanf("%d",&q->age);

p->next=q;

p=q;

printf("if exit:pleas into '0' ");

scanf("%d",&x);

}

p->next=null;

p=head;

printf("\n num name sex age \n"); while (p!=null)

{

printf("%8s%8s%6s%6d\n",p->num,p->name,p->sex,p->age);

p=p->next;

}

}

第三题:在第二题的基础上,输入一个年龄,如果链表中的结点包含的年龄等于此年龄,将此结点删除,然后依次输出线性链表中的各元素值。

#include"stdlib.h"

#include"stdio.h"

#define null 0

#define size 40

struct node

{

char num[6];

char name[8];

char sex[2];

int age;

struct node * next;

};

void main ()

{

int x,iage,find=0;

struct node * head;

struct node * p,* q,*pt;

head=(struct node *)malloc(size); p=head;

printf("if exit:pleas into '0' "); scanf("%d",&x);

while (x!=0)

{

q=(struct node *)malloc(size);

printf("num\n");

scanf("%s",q->num);

printf("name\n");

scanf("%s",q->name);

printf("sex\n");

scanf("%s",q->sex);

printf("age\n");

scanf("%d",&q->age);

p->next=q;

p=q;

printf("if exit:pleas into '0' ");

scanf("%d",&x);

}

p->next=null;

p=head;

printf("\n num name sex age \n"); while (p!=null)

{

printf("%8s%8s%6s%6d\n",p->num,p->name,p->sex,p->age); p=p->next;

}

printf("pleas into age :\n");

scanf("%d",&iage);

pt=head;

p=pt;

pt=pt->next;

while (pt!=null)

{

if(pt->age==iage)

{

p->next=pt->next;

find=1;

}

else

p=pt;

pt=pt->next;

}

if(find==0)

printf("no find %d ",iage);

else

p=head;

printf("\n num name sex age \n"); while (p!=null)

{

printf("%8s%8s",p->num,p->name);

printf("%8s%5d\n",p->sex,p->age);

p=p->next;

}

}

第四题:现在假设有两个多项式a(x)=7x^8+6x^5+12x^2-9;b(x)=3x^11+10x^8+8x^2编写一个程序将这两个多项式相加,输出两个多项式及相加的结果

#include

#include

typedef struct polynode

{

int coef;

int exp;

struct polynode *next;

}PNode;

PNode *Creat_Linkst(int n);

void PolyAdd(PNode *pa,PNode *pb);

void Print_Linkst(PNode *H);

main()

{

PNode *HA,*HB;

int la,lb;

printf("enter la,lb:");

scanf("%d,%d",&la,&lb);

printf("\ncreat HA\n");HA=Creat_Linkst(la); printf("A(x)=");Print_Linkst(HA);

printf("\ncreat HB\n");HB=Creat_Linkst(lb); printf("B(x)=");Print_Linkst(HB); PolyAdd(HA,HB);

printf("\nA(x)+B(x)=");Print_Linkst(HA); }

PNode *Creat_Linkst(int n)

{

PNode *head,*p,*s;

int i;

head=(PNode*)malloc(sizeof(PNode)); head->next=NULL;

p=head;

printf("enter coef,exp:\n");

for(i=1;i<=n;++i)

{

s=(PNode *)malloc(sizeof(PNode));

scanf("%d,%d",&s->coef,&s->exp);

s->next=NULL;

p->next=s;p=s;

}

return(head);

}

void PolyAdd(PNode *pa,PNode *pb) {

PNode *pre,*qa,*qb,*q;

int sum;

pre=pa;

qa=pa->next;

qb=pb->next;

while(qa&&qb)

{

if(qa->exp==qb->exp)

{

sum=qa->coef+qb->coef;

if(sum){qa->coef=sum;pre=qa;}

else{pre->next=qa->next;free(qa);}

qa=pre->next;

q=qb;qb=qb->next;free(q);

}

}

if(qb)pre->next=qb;

free(pb);

}

void Print_Linkst(PNode *H)

{

PNode *p;

p=H->next;

while(p->next)

{

printf("%d^%d+",p->coef,p->exp);p=p->next;

}

if(p->exp)

printf("%d^%d+",p->coef,p->exp);

else printf("%d\n",p->coef);

}

相关主题
相关文档
最新文档