#includestdio.h
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)孟津免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
#includestdlib.h
//鏈表定義
typedef int ElemType;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
/*************************************
* 鏈表函數(shù) *
*************************************/
//鏈表初始化
void InitLink(LinkList L);
//創(chuàng)建函數(shù),尾插法
void CreateLink_T(LinkList L,int n);
//創(chuàng)建函數(shù),頭插法
void CreateLink_H(LinkList L,int n);
//銷毀函數(shù)
void DestroyLink(LinkList L);
//判斷是否為空函數(shù)
bool EmptyLink(LinkList L);
//獲取函數(shù)
bool GetLink(LinkList L,int i,int e);
//插入函數(shù)
void InsertLink(LinkList L,int i,int e);
//刪除函數(shù)
void DeleteLink(LinkList L,int i,int e);
//遍歷函數(shù)
void TraverseLink(LinkList L);
//鏈表長度函數(shù)
int LengthLink(LinkList L);
//合并函數(shù)
void MergeLink(LinkList L1,LinkList L2);
void main()
{
LinkList L1,L2;
InitLink(L1);
InitLink(L2);
CreateLink_H(L1,2);
CreateLink_T(L2,2);
TraverseLink(L1);
printf("\n");
TraverseLink(L2);
printf("\n");
MergeLink(L1,L2);
TraverseLink(L1);
TraverseLink(L2);
}
//創(chuàng)建函數(shù),尾插法
void InitLink(LinkList L)
{
L=(LinkList)malloc(sizeof(LNode));
if (!L)
{
printf("Init error\n");
return;
}
L-next=NULL;
}
void CreateLink_T(LinkList L,int n)
{
if(n1)
{
printf("n must =1\n");
return ;
}
else
{
// L=(LinkList)malloc(sizeof(LNode));
L-next=NULL;
for(int i=0;in;i++)
{
LinkList p=(LinkList)malloc(sizeof(LNode));// the lower letter p
printf("enter the data :\t");
scanf("%d",(p-data));
p-next=L-next;
L-next=p;
}
}
}
//創(chuàng)建函數(shù),頭插法
void CreateLink_H(LinkList L,int n)
{
if (n1)
{
printf("n must =1\n ");
return;
}
else
{
//L=(LinkList)malloc(sizeof(LNode));
LinkList pre=(LinkList)malloc(sizeof(LNode));
L-next=NULL;
pre=L;
for(int i=0;in;i++)
{
LinkList p=(LinkList)malloc(sizeof(LNode));
printf("enter the data:\t");
scanf("%d",(p-data));
pre-next=p;
pre=p;
}
pre-next=NULL;
}
}
//銷毀函數(shù)
void DestroyLink(LinkList L)
{
LinkList q=L,p=L;
while (p)
{
q=p;
p=p-next;
free(q);
}
L-next=NULL;
}
//判斷是否為空函數(shù)
bool EmptyLink(LinkList L)
{
if (NULL==L-next)
{
return true;
}
else
{
return false;
}
}
//獲取函數(shù)
bool GetLink(LinkList L,int i,int e)
{
if (i1)
{
return false;
}
else
{
if (EmptyLink(L))
{
return false;
}
LinkList p=L-next;
int j=1;
while(pji)
{
p=p-next;
j++;
}
if (!p||ji)
{
return false;
}
else
{
e=p-data;
return true;
}
}
}
//插入函數(shù)
void InsertLink(LinkList L,int i,int e)
{
if (i0||iLengthLink(L))
{
printf("Insert error\n");
return;
}
else
{
LinkList p=L;
int j=0;
while(p(ji))
{
p=p-next;
j++;
}
if (!p||ji)
{
printf("Insert error\n");
return;
}
else
{
LinkList q=(LinkList)malloc(sizeof(LNode));
q-data=e;
q-next=p-next;
p-next=q;
}
}
}
//刪除函數(shù)
void DeleteLink(LinkList L,int i,int e)
{
if(i=0||iLengthLink(L))
{
printf("delete error\n");
return;
}
else
{
LinkList p=L;
int j=0;
while(pji-1)
{
p=p-next;
j++;
}
if(!p||ji)
{
printf("please enter i again\n");
return;
}
else
{
LinkList q=p-next;
e=p-next-data;
p-next=p-next-next;
free(q);
}
}
}
//遍歷函數(shù)
void TraverseLink(LinkList L)
{
LinkList p=L-next;
if(!p)
{
printf("the Link L is empty\n");
}
while(p)
{
printf("%d\n",p-data);
p=p-next;
}
}
//鏈表長度函數(shù)
int LengthLink(LinkList L)
{
int i=0;
LinkList p=L-next;
while(p)
{
p=p-next;
i++;
}
return i;
}
//合并函數(shù)
void MergeLink(LinkList L1,LinkList L2)
{
int i=0,flag=0;
LinkList p1=L1-next,p2=L2-next;
LinkList p=(LinkList)malloc ((LengthLink(L1)+LengthLink(L2)+2)*sizeof(LNode));
LinkList pre=p;
if (!p)
{
printf("MergeLink error\n");
return;
}
p-next=NULL;
while (p1p2)
{
if (p1-data=p2-data)
{
InsertLink(p,i++,p2-data);
p2=p2-next;
}
else
{
InsertLink(p,i++,p1-data);
p1=p1-next;
}
}
while (p1)
{
InsertLink(p,i++,p1-data);
p1=p1-next;
}
while(p2)
{
InsertLink(p,i++,p2-data);
p2=p2-next;
}
while(pre)
{
pre=pre-next;
}
LinkList q=L1;
L1=p;
DestroyLink(q);
DestroyLink(L2);
}
#include stdio.h
#include malloc.h#define N 5
typedef struct LNode
{
double data;
long number;
struct LNode *next;
}LNode,*LinkList;LinkList fun(LinkList L,double *aver)
{
LinkList p,q,h;
double sum=0;
p=L-next;
while(p!=NULL)
{
sum+=p-data;
p=p-next;
}
sum=sum/N;
*aver = sum;
printf("aver=%.2f\n",*aver);
p=L-next;
h=(LinkList)malloc(sizeof(LNode));
h-next = NULL;
while(p!=NULL)
{
if(p-data=sum)
{
q=(LinkList)malloc(sizeof(LNode));
q-number = p-number;
q-data=p-data;
q-next = h-next;
h-next = q;
}
p=p-next;
}
return h;
}
void main()
{
LinkList L,p,h;
int i;
double aver;
L= (LinkList)malloc(sizeof(LNode));
L-next = NULL;
printf("創(chuàng)建鏈表...\n輸入學(xué)生的學(xué)號和成績:\n");
for( i=0;iN;i++)//逆位序輸入N個(gè)元素的值,建立帶頭結(jié)點(diǎn)的單鏈表L
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d %lf",p-number,p-data);
p-next=L-next;
L-next=p;
}
h=fun(L,aver);
printf("平均成績?yōu)椋?.2f\n",aver);
p=h-next;
printf("大于或等于平均成績的學(xué)生信息...\n");
printf("學(xué)號 成績\n");
while(p!=NULL)
{
printf("%-12d %-3.2f\n",p-number,p-data);
p=p-next;
}
printf("\n");
}
#includeiostream
using?namespace?std;
class?Node?{
public:
int?data;
Node*?next;
Node(int?_data)?{
data?=?_data;
next?=?NULL;
}
};
class?LinkList?{
private:
Node*?head;
public:
LinkList()?{
head?=?NULL;
}
void?insert(Node?*node,?int?index)?{
if?(head?==?NULL)?{
head?=?node;
return;
}
if?(index?==?0)?{
node-next?=?head;
head?=?node;
return;
}
Node?*current_node?=?head;
int?count?=?0;
while?(current_node-next?!=?NULL??count??index?-?1)?{
current_node?=?current_node-next;
count++;
}
if?(count?==?index?-?1)?{
node-next?=?current_node-next;
current_node-next?=?node;
}
}
void?output()?{
if?(head?==?NULL)?{
return;
}
Node?*current_node?=?head;
while?(current_node?!=?NULL)?{
cout??current_node-data??"?";
current_node?=?current_node-next;
}
cout??endl;
}
void?delete_node(int?index)?{
if?(head?==?NULL)?{
return;
}
Node?*current_node?=?head;
int?count?=?0;
if?(index?==?0)?{
head?=?head-next;
delete?current_node;
return;
}
while?(current_node-next?!=?NULL??count??index?-1)?{
current_node?=?current_node-next;
count++;
}
if?(count?==?index?-?1??current_node-next?!=?NULL)?{
Node?*delete_node?=?current_node-next;
current_node-next?=?delete_node-next;
delete?delete_node;
}
}
void?reverse(){
if(head?==?NULL){
return;
}
Node?*next_node,*current_node;
current_node?=?head-next;
head-next?=?NULL;
while(current_node?!=?NULL){
next_node?=?current_node-next;
current_node-next?=?head;
head?=?current_node;
current_node?=?next_node;
}
}
};
int?main()?{
LinkList?linklist;
for?(int?i?=?1;?i?=?10;?i++)?{
Node?*node?=?new?Node(i);
linklist.insert(node,?i?-?1);
}
linklist.output();
linklist.delete_node(3);
linklist.output();
linklist.reverse();
linklist.output();
return?0;
}