?? a.cpp
字號:
#include<stdio.h>
#define NULL 0
#define LEN sizeof(struct LNode)
main()
struct LNode{
int data;
struct LNode *next;
}LNode,*LinkedList; //定義單鏈表的結點類型
int n,*L;
LinkedList LinkedListInit();
//對初始化函數的聲明
void LinkedListclear(LinkedList L);
//對清空函數的聲明
int LinkedListEmpty(LinkedList L);
//對檢查單鏈表是否為空的聲明
void LinkedListTraverse(LinkedList L);
//對遍歷函數的聲明
int LinkedListLength(LinkedList L);
//對求單鏈表長度函數的聲明
int LinkedListGet(LinkedList L,int i);
//對查找函數的聲明
int LinkedListLocate(LinkedList L,DataType x);
//對查找位置的函數的聲明
void LinkedListInsert(LinkedList L,int i,DataType x);
//對插入函數的聲明
void LinkedListDel(LinkedList L,DataType x);
//對刪除函數的聲明
LinkedList LinkedListCreat();
//對建立鏈表函數的聲明
LinkedList LinkedListInit(); {
//初始化單鏈表
int L.elem,L.length,L.listsize;
L.elem=(struct LNode*)malloc(LEN);
if(!L>Elem) // 存儲分配失敗
return 0;
L.length=0; //空表長度為0
L.listsize=LEN; //初始化存儲容量
return 1;
}
void LinkedListclear(LinkedList L);{
//清空單鏈表
int *p;
L=NULL; //定義L為頭結點
p=L->next; //初始化,p指向第一個結點
while(p)
{p=p->next;
p->data=NULL;
}
}
int LinkedListEmpty(LinkedList L){
//檢查單鏈表是否為空
int *p;
L=NULL; //定義L為頭結點
p=L->next; //初始化,p指向第一個結點
while(p)
{
if(p->data==NULL) //當結點的數據為空時繼續檢查
p=p->next;
else
return 0;
}
}
void LinkedListTraverse(LinkedList L){
//遍歷單鏈表
int *p;
int visit(int x); //對函數的聲明
L=NULL;
p=L->next; //初始化,p指向第一個結點
while(p) //依次對L的每一個數據調用函數visit
{visit(p->data);
p=p->next;
}
int visit(int x); //依次用L的每一個數據減2
{int y=2;
x=x-y;
}
}
int LinkedListLength(LinkedList L){
//求單鏈表的長度
int *p,i;
L=NULL; //定義L為頭結點
i=0; //i為記數器
while(p)
{p=p->next;
++i;
}
printf("%d",i);
}
int LinkedListGet(LinkedList L,int i){
//從單鏈表中查找元素
int i,j,*p,e;
L=NULL; //定義L為頭結點
j=1;
p=L->next;
scanf("%d",&i); //輸入查找元素的位置
while(p&&j<i)
{p=p->next; //指針后移
++j;}
if(!p||j>i) return 0;
else
e=p->data;
return 1;
}
}
int LinkedListLocate(LinkedList L,DataType x);{
//從單鏈表中查找與給定元素值相同的元素在單鏈表中的位置
int j,x,e;
j=1;
L=NULL;
p=l->next;
scanf("%d",&x);
while(p&&p->data!=x)
{p=p->next;
++j;}
if(!p)
return 0;
else
if(p->data==x)
printf("%d",j);
}
}
void LinkedListInsert(LinkedList L,int i,DataType x);{
//向單鏈表中插入元素
int j,*p,*s;
L=NULL;
p=L;j=0;
scanf("%d,%d",&i,&x);
while(p&&j<i-1) //查找插入的位置
{p=p->next;
++j;
}
if(!p||j>i-1)
break;
s=(LinkList)malloc(LEN);
s->data=x;
s->next=p->next;
p->next=s;
}
}
void LinkedListDel(LinkedList L,DataType x);{
//從單鏈表中刪除元素
int x,*p1,*p2,e;
L=NULL;
scanf("%d",&x);
p1=p2=L;
while(p1->next&&p1->data!=x)
{p1=p1->next;}
if(!(p1->next))
printf("The node can not be found!");
else
if(p1->data==x)
{p2=p1->next;
p1->next=p2->next;
e=p2->data;
free(p2);
}
}
LinkedList LinkedListCreat(){
//用尾插法建立單鏈表
int *L,*p1,*p2;
n=0;
L=NULL; //定義L為頭結點
p1=(struct LNode*)malloc(LEN); //建立第一個新結點
scanf("%d",&p->data);
p1->next=NULL;
while(p1->data!=0)
{++n;
if(n==1) L=p1; //第一個結點作表頭
else
{p2->next=p1;
p1=(struct LNode*)malloc(LEN);
scanf("%d",&p->data);
p1->next=NULL;
}
free(p1); //釋放最后一個結點所占的內存
return(L); //返回表頭
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -