老师让做课程设计 我想各位大神们教下 怎么控制 dos界面中字体颜色和背景颜色
如何让我的打印的东西别致一点
#include"stdlib.h"
#include"stdio.h"
struct node
{
int d;
struct node *next;
};
/***********************输入函数部分********************/
struct node *input(int *n)
{
int x;
struct node *head=NULL,*p,*q;
scanf("%d",&x);
while(1)
{
p=(struct node *)malloc(sizeof(struct node)); /*申请一个结点*/
p->d=x;
p->next=NULL; /*置当前结点的数据域和指针域*/
if(head==NULL)
head=p; /*若链表空,则将头指针指向当前结点p*/
else
q->next=p; /*将当前结点链接在最后*/
q=p; /*置当前结点为链表最后一个结点*/
scanf("%d",&x);
if(x==0)
break;
}
return head;
}
/*************************查找函数部分****************************/
int lserch(struct node *head,int x)
{
int k=1;
struct node *p;
p=head;
while((p!=NULL)&&(p->d!=x))
{
k++;
p=p->next;
}
if(p==NULL)
k=-1;
return(k);
}
/***************************排序函数部分*************************/
/*int bubsort(struct node *head,int *n)
{
int m,k,j,i;
int d;
k=0;
m=n-1;*/
/***********************输出函数部分*****************************/
void output(struct node *head,int *n)
{
struct node *p;
p=head;
while(p!=NULL) /*从链表第一个结点开始打印各结点元素值,并删除*/
{
printf(" %d ",p->d); /*打印当前结点中的数据*/
p=p->next;
}
printf("\n");
}
struct node *lookst(struct node *head,int x)
{
struct node *p;
p=head;
while((p->next!=NULL)&&(((p->next)->d)!=x))
p=p->next;
return(p);
}
/************************插入函数部分****************************/
struct node *inslst(struct node *head,int x,int b,int *n) /*定义结点类型*/
{
struct node *p,*q;
p=(struct node *)malloc(sizeof(struct node));
p->d=b; /*置结点的数据域*/
if(head==NULL) /*链表为空*/
{
head=p;
p->next=NULL;
return head;
}
if((head->d)==x) /*在第一个结点前插入*/
{
p->next=head;
head=p;
return head;
}
q=lookst(head,x); /*寻找包含元素x的前一个结点q*/
p->next=q->next;
q->next=p; /*结点p插到结点q之后*/
*n=*n+1;
return head;
}
/********************删除函数部分*********************************/
struct node *delst(struct node *head,int x ,int *n)
{
struct node *p,*q;
if(head==NULL) /*链表为空*/
{
printf("This is a empty list!\n");
return head;
}
if (head->d==x) /*删除第一个结点*/
{ printf("\n删除这个元素后的新链表:");
p=head->next;
free(head) ;
head=p;
return head;
}
q=lookst(head,x); /*寻找包含元素x的前一个结点q*/
if(q->next==NULL) /*链表中没有包含元素x的结点*/
{
printf("要删除的这个元素链表中不存在!\n");
return head;
}
p=q->next;
q->next=p->next;
free(p); /*释放结点p*/
*n=*n-1;
return head;
}
void main()
{
int *n,b,x,l;
int y;
struct node *head;
head=NULL;
n=NULL;
n=(int *)malloc(sizeof(int));
*n=0;
printf("\n请输入元素到线性链表中(输入“0”结束):"); /*添加链表元素*/
head=input(n);
printf("\n线性表中的元素是:"); /*输出链表*/
output(head,n);
printf("\n对链表做操作的菜单选项:\n"); /*打印出链表操作菜单*/
printf("\n ︻︻︻︻︻︻︻︻︻︻ ");
printf("\n‖ 输入1,代表插入;‖");
printf("\n‖ 输入2,代表删除;‖");
printf("\n‖ 输入3,代表查找;‖");
printf("\n‖ 输入4,代表退出。‖");
printf("\n ︼︼︼︼︼︼︼︼︼︼ \n");
while(1)
{
printf("\n请输入操作的代号:\n"); /*操作提示*/
scanf("%d",&y);
switch(y)
{
case 1:
printf("\n现在请输入要插入的元素:");
scanf("%d",&b);
printf("\n请输入在哪个元素前插入:");
scanf("%d",&x);
printf("\n插入“%d”这个元素后的新链表:",b);
head=inslst(head,x,b,n);
output(head,n);
continue;
case 2:
printf("\n现在请您输入要删除的元素:");
scanf("%d",&x);
printf("\n删除“%d”。\n",x);
head=delst(head,x,n);
output(head,n);
continue;
case 3:
printf("\n请输入您要查找的元素:");
scanf("%d",&x);
l=lserch(head,x);
printf("\n您所查找的元素是该链表中的第%d个元素\n",l);
}
if(y>4)
printf("输入有误,"); /*输入菜单代号以外的数字错误提示*/
if(y==4)
printf("\n您已退出本系统,谢谢使用!\n\n");
break; /*满足条件,退出循环*/
}
}
用这个代码作为例子帮我设计下 谢谢!