데이터 구조: 단일 체인 시트 의 생 성, 옮 겨 다 니 기, 삽입, 삭제, 읽 기 작업
26125 단어 데이터 구조
include<stdio.h>
#include
typedef struct Node{ //
int data;
struct Node *next;
}Node;
Node *create_list(Node **head, int n); //
Node *create_node(); //
void insertnode(Node **head,int num, int i); //
void printnode(Node *head); //
void deletenode(Node **head,int num); //
Node *create_list(Node **head, int n){ //
Node *current=NULL, *previous=NULL;
*head = (Node *)malloc(sizeof(Node)); //
(*head)->data = n; // ,
current = *head;
for(int i=0;i<n;i++){ // n
previous = current; //
current = create_node(); //
previous->next = current; //
}
current->next = NULL; // NULL
return *head;
}
Node *create_node(){ //
Node *p;
p = (Node *)malloc(sizeof(Node)); //
if(p == NULL){
printf("
");
exit(1);
}
p->data = rand()%100; // 100
return p;
}
void deletenode(Node **head, int num){
Node *current = *head;
Node *previous = NULL;
while(current != NULL && current->data != num){ // NULL>
previous = current; //
current = current->next; //
}
if(current == NULL){ // NULL
printf(" !
"); //
}
else{ //
if(previous != NULL){ //
previous->next = current->next; //
}
else{ //
*head = (*head)->next; //
}
free(current); //
(*head)->data --;
}
}
void printnode(struct Node *head){
struct Node *ptr = head;
while(ptr != NULL){
printf("%d ",ptr->data);
ptr = ptr->next;
}
putchar('
');
}
void insertnode( Node **head, int num, int i ){ // num,
i
Node *previous = NULL;
Node *current = (*head)->next;
Node *new;
int count=1;
new = (Node *)malloc(sizeof(struct Node));
if(new == NULL){
printf("
");
exit(1);
}
new->data = num;
if(current == NULL){ //
*head = new; //
new->next = NULL; // NULL
}
else{
while( (current != NULL) && (count != i) ){ // ,
i
previous = current;
current = current->next;
count++;
}
if(current == NULL && count>i){
printf("
");
exit(EXIT_FAILURE);
}
else{
previous->next = new;
new->next =current;
(*head)->data ++;
}
}
}
int main(){
int num;
int n,e;
int i;
Node *head=NULL;
printf(" :");
scanf("%d",&n);
head = create_list(&head, n);
printnode(head);
while(1){
printf(" :");
scanf("%d",&num);
printf(" :");
scanf("%d",&i);
if(num == -1){
break;
}
insertnode(&head,num, i);
printnode(head);
}
while(1){
printf(" :");
scanf("%d",&num);
if(num == -1){
break;
}
deletenode(&head,num);
printnode(head);
}
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에 따라 라이센스가 부여됩니다.