⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档 (2).txt

📁 程序设计比赛较为实用的一些代码,希望对别人能有帮助
💻 TXT
字号:

连表操作!
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#define LEN sizeof(struct student)
struct student
{int date;
struct student *next;
};
int n;
struct student *creat(void)
{//建立连表函数
	struct student *head;
	struct student *p1,*p2;
	n=0;
	p1=p2=(struct student *)malloc(LEN);
	cout<<"输入连表中数据:" <<endl;
	cin>>p1->date;
	head=NULL;
	while(p1->date!=0)
	{
		n++;
		if(n==1)
			head=p1;
		else
			p2->next=p1;
		p2=p1;
		p1=(struct student *)malloc(LEN);
		cin>>p1->date;
	}
	p2->next=NULL;
	return(head);
}
struct student *del(struct student *head,int data)
{//删除连表结点
	struct student *p1,*p2;
	if(head==NULL)
		cout<<"连表不存在!"<<endl;
	p1=head;
	while(data!=p1->date&&p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	if(data==p1->date)
	{
		if(p1==head)
			head=p1->next;
		else
			p2->next=p1->next;
		cout<<"删除结点"<<data<<endl;
		n=n-1;
	}
	else
		cout<<"找不到该结点!"<<endl;
	return(head);
}
struct student *insert(struct student *head,struct student *stud)
{//插入连表接点(排序插入)
	struct student *p0,*p1,*p2;
	p1=head;
	p0=stud;
	if(head==NULL)
	{
		head=p0;
		p0->next=NULL;
	}
	else{
		while((p0->date>p1->date)&&(p1->next!=NULL))
		{
			p2=p1;
			p1=p1->next;
		}
		if(p0->date<p1->date)
		{
			if(head==p1)
			{
				head=p0;
				p0->next=p1;
			}
			else
			{
				p2->next=p0;
				p0->next=p1;
			}
		}
		else
		{
			p1->next=p0;
			p0->next=NULL;
		}
	}
	n++;
	return(head);
}
void print(struct student *head)
{//输出连表信息
	cout<<"输出连表:"<<endl;
	struct student *p;
	p=head;
	if(head!=NULL)
		do
		{
			cout<<p->date<<endl;
			p=p->next;
		}while(p!=NULL);
}

void main()
{
	struct student *head,*p,*stud;
    stud=(struct student *)malloc(LEN);
	int data;
	head=creat();
    print(head);
	cout<<"输入要删除的data"<<endl;
	cin>>data;
	head=del(head,data);
    print(head);
	cout<<"输入要插入的data"<<endl;
	cin>>data;
	
	stud->date=data;
	stud->next=NULL;
    head=insert(head,stud);
	print(head);
}
///////////////////////////////////////////////////////////////////////
l合并两个连表

//#include<stdafx.h> 
#include<iostream.h>
#include<stdlib.h> 
#include<stdio.h> 
typedef struct Lnode
{
 int date;
 struct Lnode *next;
}Lnode,*Linklist;
Linklist Insert(Linklist &L,Linklist&p,int n)//插入排续
{
	Linklist p0,p1,p2;

p2=p1=L->next;
 p0=p;
if(L->next==NULL)
{
	L->next=p0;
	p0->next=NULL;
}//第一个直接插在头指针后面
else
{
while((p0->date>p1->date)&&(p1->next!=NULL))
{
		p2=p1;
		p1=p1->next;
}//从头往下走
if(p0->date<p1->date)
	{
		if(L->next=p1)
		{L->next=p0;
		p0->next=p1;}
		else
		{ p2->next=p0;
		p0->next=p1;
		}
	

}//小的往前方
else
{	p1->next=p0;
p0->next=NULL;}
	
	}//大的直接纺后面

 return(L);
}
void MergeList_L(Linklist &La,Linklist&Lb,Linklist&Lc)//合并函数
{Linklist pa,pb,pc; 
	pa=La->next;
 pb=Lb->next;
 Lc=pc=La;
 while(pa&&pb)
 {if(pa->date<=pb->date){
	 pc->next=pa;
	 pc=pa;
	 pa=pa->next;
 }
 else {pc->next=pb;
 pc=pb;
 pb=pb->next;
 }
 }
 pc->next=pa?pa:pb;
 free(Lb);
}
void print(Linklist&L){//输出函数
	Linklist q;
	q=L->next;
	while(q){

		cout<<q->date<<"       ";
    	q=q->next;
	
	}
}
	void main()
	{
//	InitList(&la);
//	InitList(&lb);
//	InitList(&lc);
		Linklist La,Lb,Lc;

	int n=0,m=0;
	Linklist p;
	cout<<"输入A链表长度 :"<<endl;
cin>>n;
cout<<"输入A链表中的数据:"<<endl;
        int i=0;
		La=(Linklist)malloc(sizeof(Lnode));
		La->next=0;
		Lb=(Linklist)malloc(sizeof(Lnode));
		Lb->next=0;
	
		for( i=0;i<n;i++)
		{7
		p=(Linklist)malloc(sizeof(Lnode));
		cin>>p->date;
		p->next=0;
		La=Insert(La,p,n);
		}
		cout<<"第一个链表:\t"<<endl;
		print(La);
		cout<<endl<<"输入B链表长度 :"<<endl;
		cin>>m;
		cout<<"输入B链表中的数据:"<<endl;
     	for(i=0;i<m;i++)
		{
		p=(Linklist)malloc(sizeof(Lnode));
	
		scanf("%d",&p->date);
			p->next=0;
		Lb=Insert(Lb,p,m);
	}
		cout<<"第二个链表:\t"<<endl;
		print(Lb);
		cout<<endl<<"合并后的表C:"<<endl;
     MergeList_L(La,Lb,Lc);
	 print(Lc);
	 cout<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -