先頭ノードチェーンテーブルの基本操作C/C+(ヘッドプラグ、テールプラグ、印刷、検索、挿入、削除)
29221 ワード
先頭ノードチェーンテーブルの基本操作C/C++先頭ノードチェーンテーブルの基本動作 テスト結果 先頭ノードチェーンテーブルの基本操作
テスト結果の表示
/**
*
*/
#include
#include
/**
*
*/
typedef struct LNode{ //
int data; //
struct LNode *next; //
}LNode,*LinkList; //
/**
* - ( )
*/
void printDataAndLength(LinkList L){
int length = 0;
while(L != NULL){
printf(" - %d
",L->data);
L= L->next;
length ++;
}
printf(" ( )- %d
",length-1);
}
/**
*
*/
LinkList List_HeadInsert(LinkList &L){ //
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode)); //
L->data = 0; // data 0
L->next = NULL; //
printf(" :
");
scanf("%d",&x);
while (x!=9999){
s=(LNode*)malloc(sizeof(LNode)); //
s->data = x; //
s->next = L->next; // null
L->next = s; //
scanf("%d",&x);
}
return L;
}
/**
*
*/
LinkList List_TailInsert(LinkList &L){ //
LNode *s,*r;
int x;
L=(LinkList)malloc(sizeof(LNode)); //
L->data = 0; // data 0
L->next = NULL; //
r = L; //
printf(" :
");
scanf("%d",&x);
while (x!=9999){
s=(LNode*)malloc(sizeof(LNode)); //
s->data = x; //
r->next = s; //
r = s; //
scanf("%d",&x);
}
r->next = NULL; // NULL
return L;
}
/**
*
* @return
*/
LNode * getElem(LinkList L,int i){
int j = 0;
LNode *s = L;
if(i == 0){
return L;
}
if(i < 1 || j > i){ // i
return NULL;
}
while(j<i){
s = s->next; //
j++;
}
return s;
}
/**
*
* @return
*/
LNode * locateElem(LinkList L,int value){
LNode *s = L;
while(s->data != value){
s = s->next; //
}
return s;
}
/**
* i
* @return
*/
void insertByLocate(LinkList &L,int i){
int x,j=0;
LNode * s = getElem(L,i-1); //
LNode * newNode = (LNode *)malloc(sizeof(LNode));
printf(" :");
scanf("%d",&x);
newNode->data = x; //
newNode->next = s->next; //
s->next = newNode;
}
/**
* i
* @return
*/
void delNode(LinkList &L,int i){
int j=0;
LNode *s = getElem(L,i-1); // i
LNode *delNode = s->next; //
s->next = delNode->next;
free(delNode); //
}
int main(){
LinkList L;
printf("---------- ------------
");
//
//L = List_HeadInsert(L);
//
L = List_TailInsert(L);
//
printf("---------- -------------
");
printDataAndLength(L);
//
printf("---------- -------------
");
LNode * node = getElem(L, 3);
printf(" %d
",node->data);
//
printf("---------- -------------
");
LNode * lNode = locateElem(L,4);
printf(" %d
",lNode->data);
printf("---------- -------------
");
// i
insertByLocate(L,4);
printDataAndLength(L);
// i
printf("---------- -------------
");
delNode(L,4);
printDataAndLength(L);
return 0;
}
テスト結果の表示
---------- ------------
:
1
2
3
4
5
6
7
8
9999
---------- -------------
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
( )- 8
---------- -------------
3
---------- -------------
4
---------- -------------
:10
- 0
- 1
- 2
- 3
- 10
- 4
- 5
- 6
- 7
- 8
( )- 9
---------- -------------
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
( )- 8