1.3 단일 체인 표 의 디자인 과 실현
4306 단어 데이터 구조
// :DevC++
//
#include
#include
#define NULL 0
typedef int ElemType;//
//
typedef struct LNode
{
ElemType data;//
struct LNode *next;//
}LNode,*LinkList;
/****---------------------------------------------------****/
// ( )
// :CreateOne(int n)
// : ( )int n,
// :
// : LNode* ,
/****--------------------------------------------------****/
LNode* CreateOne(int n)
{
int i;
LNode *head;//
LNode *p;//
//
head = (LNode*)malloc(sizeof(LNode));
head->next = NULL;
printf("Pleade input the data for LinkList Nodes:
");
for(i = n; i > 0; i--)
{
p = (LNode*)malloc(sizeof(LNode));// ,
scanf("%d",&p->data); //
//
p->next = head->next;
head->next = p;
}
return head;// ,
}
/****---------------------------------------------------------****/
// ( )
// : CreateTwo(LNode*head, int n)
// : ( )LNode*head
// ( )int n,
// :
// :
/****--------------------------------------------------------****/
void Createtwo(LinkList &head, int n)
{
int i;
LNode *p;//
//
head = (LinkList)malloc(sizeof(LNode));
head->next = NULL;
printf("Pleade input the data for LinkList Nodes:
");
for(i = n; i > 0; i--)
{
p = (LNode*)malloc(sizeof(LNode));// ,
scanf("%d", &p->data);//
//
p->next = head->next;
head->next = p;
}
}
/****--------------------------------------------------****/
// :InsertLNode(LNode *L, int i, ElemType e)
// : ( )LNode*L, L
// ( )int i
// ( )ElemType e
// :
// : int , 1 ,0
/****-------------------------------------------------****/
int InsertNode(LNode *L, int i, int e)
{
LNode *p = L;//
int j = 0;
// , p i
while(p&&j < i-1)
{
p = p->next;
++j;
}
//
if(!p||j > i-1)
{
printf("Error!The location os illegal!");
return 0;
}
LNode *s;
s = (LNode*)malloc(sizeof(LNode));//
s->data = e;//
//
s->next = p->next;
p->next = s;
return 1;
}
/****------------------------------------------------****/
// :DeleteNode(LinkList &L, int i, int &e)
// : ( )LinkList &L, L
// ( )int i
// ( )ElemType &e
// :
// :ElemType
/****-----------------------------------------------****/
ElemType DeleteNode(LinkList &L, int i, int &e)
{
LNode *p;
p = L; // i
LNode*q; //
int j = 0;
// , p i
while(p->next && j < i-1)
{
p = p->next;
++j;
}
//
if(!p||j>i-1)
{
printf("element is not exist!");
return 0;
}
q = q->next;
p->next = q->next;// i
e = q->data;
free(q);
return(e);//
}
/****------------------------------------------------------------------*****/
// :DisplayList(LinkList &L, int i, ElemType &e)
// : ( )LinkList &L, L
// ( )int i
// ( )ElemType &e
// :
// :
/****------------------------------------------------------------------****/
void DisplayList(LinkList &L)
{
LNode *p;
p = L->next;
while(p!= NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("
");
}
//******************* *****************************//
int main()
{
LNode *L1;
int NodeNum;
printf("Please input the Init LinkNode Number:
");
scanf("%d",&NodeNum);
L1 = CreateOne(NodeNum);
//LNode*L2;
//CreateTwo(L2,NodeNum);// L2
//
printf("the current L1 is:");
DisplayList(L1);
//
int result;// , result
result = InsertNode(L1,2,88);
if(result)
{
printf("success to insert!
");
}
//
printf("the current L1 is");
DisplayList(L1);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.