알고리즘과 데이터 구조(c언어)-선형 단일 체인 테이블 기본 조작
4237 단어 알고리즘과 데이터 구조기본 작업선형 단일 체인 테이블
#include
#include
typedef int Element;
typedef char(*Status)[10];
#define ERROR "error"
#define OK "ok";
//
typedef struct Node{
Element data;
struct Node *next;
}Node,*LinkedList;
//
LinkedList init(){
Node *l;
l = (Node *)malloc(sizeof(Node));
l->next = NULL;
return l;
}
//
void create(LinkedList l){
for(int i = 2; i < 5; i++){
LinkedList p;
p = (LinkedList)malloc(sizeof(Node));
p->data = i;
p->next = l->next;
l->next = p;
}
}
// ( )
void insertHead(LinkedList l,Element e){
LinkedList p;
p = (LinkedList)malloc(sizeof(Node));
p->data = e;
p->next = l->next;
l->next = p;
}
// ( )
void insertTail(LinkedList L,Element e){
LinkedList p,r;
//r ,
r = L;
//
while(r->next){
r = r->next;
}
//
p = (LinkedList)malloc(sizeof(Node));
p->data = e;
//
r->next = p;
//
r = p;
//
r->next = NULL;
}
// ( 0 )
Status LinkedListGet(LinkedList l,int i,Element *e){
LinkedList p = l->next;
int j = 0;
while(p&&jnext;
j++;
}
if(!p||j>i){
return ERROR;
}
*e = p->data;
return OK;
}
//
Status LinkedListInsert(LinkedList L,int index,Element e){
LinkedList pre,p; //pre
pre = L->next;
int tempi = 1;
while(pre&&tempinext;
++tempi;
}
if(!pre||tempi>index){
// index
return ERROR;
}
p = (LinkedList)malloc(sizeof(Node));
p->data = e;
p->next = pre->next;
pre->next = p;
return OK;
}
//
Status LinkedListRemove(LinkedList L,int index,Element *e){
LinkedList pre,p;
//pre
pre = L->next;
int tempi = 1;
// i-1
while(pre&&tempinext;
++tempi;
}
if(!(pre->next)||tempi>index){
// index
return ERROR;
}
p = pre->next;
pre->next = p->next;
*e = p->data;
// p
free(p);
return OK;
}
// , ( ), NULL;
Node * LinkedListIndexOf(LinkedList L,Element e){
LinkedList p;
if(!L){
return ERROR;
}
p = L;
while(p&&p->data!=e){
p = p->next;
}
return p;
}
//
Status LinkedListClear(LinkedList L){
LinkedList p,q;
p = L->next;
while(p){
q = p->next;
free(p);
p = q;
}
// 。
L->next = NULL;
return OK;
}
//
void toString(LinkedList l){
printf("[");
l = l->next;
while(l){
printf("%d",l->data);
l=l->next;
if(l){
printf(",");
}
}
printf("]
");
}
int main(){
LinkedList L = init();
create(L);
//insertHead(L,5);
insertTail(L,1);
Element a = -1;
// Element *a = &1; , ,c 。
// Element *a = 1; *a 1。
// ! ! !( , 0, )。
// , ( ) ! , ( ),
// ( ), !
Element *intPoint=&a;
// *intPoint=a; :int *intPoint; *intPoint = a;
// , ,
// 0 ( 0 )
Status res = LinkedListGet(L,0,intPoint);
printf("Get() res is :%s,element is %d
",res,*intPoint);
LinkedListInsert(L,2,5);
res = LinkedListRemove(L,3,intPoint);
printf("remove status :%s,remove Element is %d
",res,*intPoint);
Node *indexRes = LinkedListIndexOf(L,7);
printf("..index Memory address :%d
",indexRes);
//LinkedListClear(L);
toString(L);
return 0;
}
부족한 점과 잘못된 점을 많이 지적하여 주시기 바랍니다. 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python3를 사용하여 빠른 배열 정렬2020년 새해 복 많이 받으세요.저는 ryuichi69라고 합니다.오늘도 알고리즘 연습의 성과, 연습을 설명하는 동시에 이 글을 썼다.솔직히 이해하기 쉽게 쓰느라 힘들었는데 설명하기 어려운 부분, 요건 누락 등이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.