gpt4 book ai didi

char(包含单词)数组冒泡排序问题(三)

转载 作者:行者123 更新时间:2023-11-30 19:29:04 25 4
gpt4 key购买 nike

C 中的输出错误。如果您编译并运行,则不会对数组中的单词进行排序。我的C信息很少。你能看到我的代码中的错误吗?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

struct node {
char data;
int key;
struct node *next;
};


struct node *head = NULL;
struct node *current = NULL;

//display the list
void printList() {
struct node *ptr = head;
printf("\n");

//start from the beginning
while(ptr != NULL) {
printf("(%d -> %c)",ptr->key,ptr->data);
printf("\n");
ptr = ptr->next;
}
}

//insert link at the first location
void insertFirst(int key, char data) {
//create a link

struct node *link = (struct node*) malloc(sizeof(struct node));

link->key = key;
link->data = data;

//point it to old first node
link->next = head;

//point first to new first node
head = link;
}

//is list empty
bool isEmpty() {
return head == NULL;
}

int length() {
int length = 0;
struct node *current;

for(current = head; current != NULL; current = current->next) {
length++;
}

return length;
}

void buble_sort() {

int i, j, k, tempKey;
char tempData;
struct node *current;
struct node *next;

int size = length();
k = size ;

for ( i = 0 ; i < size - 1 ; i++, k-- ) {
current = head;
next = head->next;

for ( j = 1 ; j < k ; j++ ) {

if ( current->data > next->data ) {
tempData = current->data;
current->data = next->data;
next->data = tempData;

tempKey = current->key;
current->key = next->key;
next->key = tempKey;
}

current = current->next;
next = next->next;
}
}
}

void main() {
insertFirst(1,"Papatya");
insertFirst(2,"DortKardes");
insertFirst(3,"Toroslu");
insertFirst(4,"PostEdu");
insertFirst(5,"Adana");

buble_sort();

printf("Buble Sort ile Siralanmis Hali : ");
printList();
}

最佳答案

您应该阅读有关指针的内容并在 c 中使用字符串。

正如评论中提到的。要包含字符串,您应该使用 char *。

这是工作代码的示例:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

struct node {
char *data;
int key;
struct node *next;
};


struct node *head = NULL;
struct node *current = NULL;

//display the list
void printList() {
struct node *ptr = head;
printf("\n");

//start from the beginning
while(ptr != NULL) {
printf("(%d -> %s)",ptr->key,ptr->data);
printf("\n");
ptr = ptr->next;
}
}

//insert link at the first location
void insertFirst(int key, char *data) {
//create a link

struct node *link = (struct node*) malloc(sizeof(struct node));

link->key = key;
link->data = data;

//point it to old first node
link->next = head;

//point first to new first node
head = link;
}

//is list empty
bool isEmpty() {
return head == NULL;
}

int length() {
int length = 0;
struct node *current;

for(current = head; current != NULL; current = current->next) {
length++;
}

return length;
}

void buble_sort() {

int i, j, k, tempKey;
char *tempData = NULL;
struct node *current;
struct node *next;

int size = length();
k = size ;

for ( i = 0 ; i < size - 1 ; i++, k-- ) {
current = head;
next = head->next;

for ( j = 1 ; j < k ; j++ ) {

if ( strcmp(current->data, next->data) > 0 ) {
tempData = current->data;
current->data = next->data;
next->data = tempData;

tempKey = current->key;
current->key = next->key;
next->key = tempKey;
}

current = current->next;
next = next->next;
}
}
}

void main() {
insertFirst(1,"Papatya");
insertFirst(2,"DortKardes");
insertFirst(4,"PostEdu");
insertFirst(5,"Adana");
insertFirst(3,"Toroslu");

buble_sort();

printf("Buble Sort ile Siralanmis Hali : ");
printList();
}

关于char(包含单词)数组冒泡排序问题(三),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53338187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com