데이터 구조 제2 장 선형 표 - 교과서 코드
#include
using namespace std;
typedef int ElemType;
typedef int Status;
//
typedef struct{
int n; //
int maxLength; //
ElemType *element; //
}SeqList;
//
Status Init(SeqList *L,int mSize){
L->n=0;
L->maxLength=mSize;
L->element=(ElemType *)malloc(sizeof(ElemType)*mSize); //
if(!L->element)
return 0;
return 1;
}
// ai ( i )
Status Find(SeqList L,int i,ElemType *x){
if(i<0||i>L.n-1)
return 0;
*x=L.element[i]; // x
return 1;
}
// , i+1, x
Status Insert(SeqList *L,int i,ElemType x){
if(i1||i>L->n-1) //
return 0;
if(L->n==L->maxLength) //
return 0;
for(int j=L->n-1;j>i;j--)
L->element[j+1]=L->element[j];
L->element[i+1]=x;
L->n=L->n+1;
return 1;
}
// , ai
Status Delete(SeqList *L,int i){
if(i<0||i>L->n-1)
return 0;
if(!L->n) //
return 0;
for(int j=i+1;j<=L->n;j++)
L->element[j-1]=L->element[j];
L->n--;
return 1;
}
//
Status Output(SeqList L){
if(!L.n)
return 0;
for(int j=0;j<=L.n-1;j++)
cout<" ";
cout<return 1;
}
//
void Destroy(SeqList *L){
L->maxLength=0;
L->n=0;
free(L->element);
}
int main(){
int i;
SeqList list;
Init(&list,10);
for(i=0;i<9;i++)
Insert(&list,i-1,i); // ai+1 i
Output(list);
Delete(&list,0);
Output(list);
Destroy(&list);
return 0;
}
2. 선형 표 의 체인 저장 소
#include<iostream>
using namespace std;
typedef int ElemType;
typedef int Status;
// ,
typedef struct node{
ElemType element;
struct node *link;
}node;
//
typedef struct{
node *first; // ,
int n; //
}SingleList;
//
Status Init(SingleList *L){
L->n=0;
L->first=NULL;
return 1;
}
// , ai
Status Find(SingleList L,int i,ElemType *x){
node *p;
if(i<0||i>L.n-1)
return 0;
p=L.first;
for(int j=0;j<i;j++)
p=p->link;
*x=p->element; // x
return 1;
}
// , i+1, x
Status Insert(SingleList *L,int i,ElemType x){
node *p,*q;
if(i1||i>L->n-1)
return 0;
p=L->first;
for(int j=0;j<i;j++) p=p->link; //p ,p ai
q=(node *)malloc(sizeof(node )); // q
q->element=x;
if(i>-1){ //
q->link=p->link;
p->link=q;
}
else{
q->link=L->first; // ,
L->first=q;
}
L->n++;
return 1;
}
// , ai
Status Delete(SingleList *L,int i){
node *p,*q;
if(!L->n)
return 0;
if(i<0||i>L->n-1)
return 0;
p=L->first;
q=L->first;
for(int j=0;j<i-1;j++)
q=q->link; //q
if(i==0){ //
L->first=L->first->link;
}
else{
p=q->link; //p
q->link=p->link;
}
free(p); // p
L->n--;
return 1;
}
//
Status Output(SingleList L){
node *p;
if(!L.n)
return 0;
p=L.first;
while(p){
cout<<p->element<<" ";
p=p->link;
}
cout<<endl;
return 1;
}
// ,
Status Destory(SingleList *L){
node *p; //p ,
while(L->first){
p=L->first->link;
free(L->first);
L->first=p;
}
return 1;
}
int main(){
int i,x;
SingleList list;
Init(&list);
for(i=0;i<9;i++)
Insert(&list,i-1,i);
cout<<"The linklist is: "<<endl;
Output(list);
Delete(&list,0);
cout<<"The linklist is: "<<endl;
Output(list);
Find(list,0,&x);
cout<<"The value is: "<<endl;
cout<<x<<endl;
Destory(&list);
return 0;
}
3. 시계 머리 를 가 진 더 블 링크 는 머리 를 대표 하 는 더 블 링크 를 쓸 때 취소 할 때 까지 잘못 썼 고 나중에 수정 합 니 다.
/*
, , ,
, */
#include<iostream>
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct node{
ElemType element; //
struct node *link; //
}node;
typedef struct{
struct node *head;
int n; //
}HeaderList;
//
Status Init(HeaderList *list){
list->head=(node *)malloc(sizeof(node));
if(!list->head)
return 0;
list->n=0;
list->head->link=NULL;
return 1;
}
// , ai+1 x
Status Insert(HeaderList *list,int i,ElemType x){
if(i1||i>list->n-1){
return 0;
}
node *p,*q;
p=list->head;
for(int j=0;j<=i;j++) p=p->link;
q=(node *)malloc(sizeof(node));
q->element=x;
q->link=p->link;
//p ,q
p->link=q;
list->n++;
return 1;
}
// , ai.p ,q
Status Delete(HeaderList *list,int i){
node *p,*q;
if(!list->n)
return 0;
if(i<0||i>list->n-1)
return 0;
p=list->head;
for(int j=0;j<i;j++) p=p->link;
q=p->link;
p->link=q->link;
free(q);
list->n--;
return 1;
}
//
Status Output(HeaderList list){
node *p;
p=list.head->link;
while(p){
cout<<p->element;
p=p->link;
}
cout<<endl;
return 1;
}
// ai, x
Status Find(HeaderList list,int i,ElemType *x){
if(i<0||i>list.n-1)
return 0;
node *p;
p=list.head;
for(int j=0;j<=i;j++) p=p->link;
*x=p->element;
return 1;
}
//// ,
//Status Destroy(HeaderList *list){
// node *p=list->head;
// while(p){
// p=list->head->link;
// free(list->head);
// list->head=p;
// }
// return 1;
//}
int main(){
int i,x;
HeaderList list;
Init(&list);
for(i=0;i<9;i++){
Insert(&list,i-1,i);
}
cout<<"the headlist is:";
Output(list);
Delete(&list,0);
cout<<"the headlist is:";
Output(list);
Find(list,0,&x);
cout<<"the value is:";
cout<<x<<endl;
// Destroy(&list);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.