데이터 구조 링크 및 통합
6260 단어 데이터 구조
아니면 LinkList. h, LinkList. c, main. c 로 나 눌 까요?
전에 급히 물건 을 재촉 할 때 copy 를 크게 고 쳐 서 제출 했 습 니 다.자신 이 다시 쓴 후에 많은 문제 가 이 부분 에 있다 는 것 을 발견 하 였 다.
LinkList.h
#include<stdio.h>
#include<malloc.h>
typedef int DataType;
typedef struct SimpleLinkList *Node;
struct SimpleLinkList{
DataType info;
Node link;
} ;
typedef struct SimpleLinkList *LinkList;
LinkList CreateNUllList();
int isNull(LinkList linklist);
int insertPost(LinkList linklist,Node node,DataType element);
int insertBack(LinkList linklist,Node node,DataType element);
int printList(LinkList linklist);
Node searchElement(LinkList linklist,DataType element);
DataType showValue(LinkList linklist,Node node);
int deleteElement(LinkList linklist,DataType element);
LinkList combine(LinkList one,LinkList another);
LinkList.c
#include "LinkList.h"
LinkList CreateNUllList(){
LinkList linklist = (LinkList)malloc(sizeof(struct SimpleLinkList));
if(linklist != NULL)
linklist -> link = NULL;
else
printf("create fail!");
return linklist;
}
int isNull(LinkList linklist){
return (linklist != NULL); // not null return 1
}
int insertPost(LinkList linklist,Node node,DataType element){
Node temp = (Node)malloc(sizeof(struct SimpleLinkList));
// element
if(temp == NULL){
printf("insert fail");
return 0;
}else{
for(linklist;linklist!= NULL; linklist = linklist -> link) {
if(linklist -> link == node){
temp ->info = element;
linklist ->link = temp;
temp ->link = node;
}
}
}
return 1;
//
}
// insert forward
//
// node
// node link “ ”
int insertBack(LinkList linklist,Node node,DataType element){
Node temp = (Node)malloc(sizeof(struct SimpleLinkList));
if(temp == NULL){
printf("insert element fail!");
return 0;
}
temp -> info = element;
temp -> link = node -> link;
node -> link = temp;
return 1;
} //insert back
int printList(LinkList linklist){
if(linklist == NULL){
printf("it is null");
return 0;
}
while(linklist -> link != NULL){
printf("%2d",linklist->link->info);
linklist = linklist -> link ;
}
printf("
");
return 1;
}
Node searchElement(LinkList linklist,DataType element){
Node node;
if(linklist == NULL){
printf("the element was not found");
return NULL;
}
node = linklist -> link;
while(node != NULL && node -> info != element){
node = node -> link;
}
if(node == NULL){
return NULL;
}
return node;
}
DataType showValue(LinkList linklist,Node node){
Node temp;
if(linklist == NULL){
printf("the element was not found");
return NULL;
}
temp = linklist -> link;
while(temp != NULL && temp -> link != node){
temp = temp -> link;
}
return node;
}
int deleteElement(LinkList linklist,DataType element){
Node node;
Node temp;
if(linklist == NULL){
printf("the element you deleted was not found");
return 0;
}
node = linklist ;
while(node ->link!= NULL && node ->link-> info != element){
// link info element 。
node = node -> link;
// printf("test
");link ->info link !
}
// printf("test2");
if(node->link== NULL ){
printf("the element you deleted was not found
");
return 0;
} else {
temp = node->link;
node -> link = temp -> link;
free(temp);
printf("the element is deleted
");
return 1;
}
}
LinkList combine(LinkList one,LinkList another){
//
// malloc
// : one ->link!= NULL while(one!= NULL)
// one null link malloc 。
Node temp ;
LinkList linken;
linken = one;
while(one ->link!= NULL)
one = one ->link;
for(another;another->link!= NULL; another = another ->link){
temp = (Node)malloc(sizeof(struct SimpleLinkList));
temp ->info = another ->link ->info;
temp ->link = another ->link ->link;
one ->link = temp;
one = one ->link;
}
return linken;
// linken
}
main.c
#include "LinkList.h"
int main(){
int i,element;
LinkList linklist1 = CreateNUllList();
LinkList linklist2 = CreateNUllList();
LinkList linklist3 = CreateNUllList();
Node note = linklist1;
Node note2 = linklist1;
//if(note != NULL) printf("yes");
for(i = 0;i<10;i++){
while(note != NULL)
note = note -> link;
insertPost(linklist1, note,i);
}//
for(i = 0;i<10;i++){
insertBack(linklist2, linklist2,i);
}
//printf("%d",linklist->link->info);
printList(linklist1);
printList(linklist2);
/* printf("input the value of the element you search
");
scanf("%d",&element);
if(searchElement(linklist1,element) == NULL)
printf("not found");
for(i=0;note2 != searchElement(linklist1,element);note2 = note2 ->link,i++ )
;//
if(searchElement(linklist1,element) == NULL)
printf("not found
");
else
printf("%d is the %dth element of the linklist
",element,i);
printf("input the value of the element you delete
");
// scanf("%d",&element);
//deleteElement(linklist1,element);
// printList(linklist1);
*/
linklist3 = combine(linklist1,linklist2);
printList(linklist3);
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에 따라 라이센스가 부여됩니다.