目的:
**1.了解VC++环境的组成 **
2.理解线性表的概念、特点、和抽象数据类型,掌握顺序表的定义与实现
内容:
创建线性表LA,LB。合并成LC表,并删除重复元素,保持有序。
源码:
#include
#include
struct Pro1
{
int a;
struct Pro1 *next;
};
typedef struct Pro1 NODE;
NODE *LA();
NODE *LB();
NODE *LC(NODE *LA,NODE *LB);
NODE *Delete_same(NODE *head);
NODE *Delete_same(NODE *head);
int Length(NODE *head);
void Diaplay(NODE *head);
NODE *LA()
{
NODE *head,*p,*tail;
head=p=tail=(NODE *)malloc(sizeof(NODE));
printf("In put Linked list 1: ");
while(scanf("%d",&p->a)!=EOF)
{
tail->next=p;
tail=p;
p=(NODE *)malloc(sizeof(NODE));
}
tail->next=NULL;
return head;
}
NODE *LB()
{
NODE *head,*p,*tail;
head=p=tail=(NODE *)malloc(sizeof(NODE));
printf("In put Linked list 2: ");
while(scanf("%d",&p->a)!=EOF)
{
tail->next=p;
tail=p;
p=(NODE *)malloc(sizeof(NODE));
}
tail->next=NULL;
return head;
}
NODE *LC(NODE *LA,NODE *LB)
{
NODE *head,*p,*tail;
head=p=tail=(NODE *)malloc(sizeof(NODE));
while(LA)
{
p->a=LA->a;
LA=LA->next;
tail->next=p;
p=(NODE *)malloc(sizeof(NODE));
}
while(LB)
{
p->a=LB->a;
LB=LB->next;
tail->next=p;
tail=p;
p=(NODE *)malloc(sizeof(NODE));
}
tail->next=NULL;
return head;
}
NODE *Delete_same(NODE *head)
{
NODE *p,*q,*temp;
p=head;
while(p->next)
{
q=p;
while(q->next)
{
if(p->a==q->next->a)
{
temp=q->next;
q->next=temp->next;
free(temp);
}
else
{
q=q->next;
}
}
p=p->next;
}
return head;
}
int Length(NODE *head)
{
int size=0;
while(head!=NULL)
{
size++;
head=head->next;
}
return size;
}
NODE *Sort(NODE *head)
{
int flag=0;
NODE *p,*q,*temp;
temp=p=head;
q=head->next;
int length=Length(head);
int i;
for(i=0;i
{
flag=0;
while(q!=NULL)
{
if(p->a>q->a&&flag==0)
{
p->next=q->next;
q->next=p;
head=q;
q=p->next;
break;
}
else if(p->a>q->a&&flag==1)
{
p->next=q->next;
q->next=p;
temp->next=q;
q=p->next;
temp=temp->next;
flag=1;
}
else
{
temp=p;
p=p->next;
q=p->next;
flag=1;
}
}
temp=p=head;
q=p->next;
}
return head;
}
void Display(NODE *head)
{
NODE *p;
p=head;
while(p)
{
printf("%d ",p->a);
p=p->next;
}
}
int main()
{
NODE *pLA;
NODE *pLB;
NODE *pLC;
pLA=LA();
pLB=LB();
pLC=LC(pLA,pLB);
printf("Linked list LA: ");
Display(pLA);
printf("\nLinked list LB: ");
Display(pLB);
printf("\nAfter Delete same: ");
Delete_same(pLC);
Display(pLC);
printf("\nLC: ");
pLC=Sort(pLC);
Display(pLC);
return 0;
}
心得:
初步了解了Linux系统,掌握了线性表,可以在Linux终端中编译c文件并运行。