c语言,利用自己姓名拼音和学号构建一个 字符链串,并反向输出姓名拼音,如zhangsan001,输出则为1000nasgnahz
时间: 2024-10-22 20:08:39 浏览: 62
在C语言中,要创建一个字符链串并实现这个需求,首先需要定义一个结构体表示单个节点,然后创建一个头结点来连接所有的节点。假设我们的姓名拼音存储在一个字符串数组中,学号是一个整数。以下是步骤:
1. 定义链表节点结构:
```c
typedef struct Node {
char* pinyin; // 姓名拼音
int id; // 学号
struct Node* next; // 指向下一个节点的指针
} ListNode;
```
2. 创建一个函数来初始化链表,并构造姓名拼音和学号:
```c
ListNode* createLinkedList(char* namePinyin[], int id, int length) {
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
head->pinyin = strdup(namePinyin[0]);
head->id = id;
head->next = NULL;
for (int i = 1; i < length; i++) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->pinyin = strdup(namePinyin[i]);
newNode->id = i + 1; // 假设从1开始编号
newNode->next = head->next;
head->next = newNode;
}
return head;
}
```
3. 反转链表并输出:
```c
void reversePrintList(ListNode* head) {
ListNode* prev = NULL;
ListNode* current = head;
while (current != NULL) {
ListNode* temp = current->next;
current->next = prev;
prev = current;
current = temp;
}
while (prev != NULL) {
printf("%d", prev->id);
free(prev->pinyin); // 释放内存
prev = prev->next;
if (prev)
printf(" ");
}
printf("%s", prev->pinyin); // 输出最后一个节点的姓名拼音
}
```
4. 主程序中调用上述函数:
```c
int main() {
char* namePinyin[] = {"zhang", "san", "001"};
int id = 1;
int length = sizeof(namePinyin) / sizeof(namePinyin[0]);
ListNode* list = createLinkedList(namePinyin, id, length);
reversePrintList(list);
free(list); // 释放所有节点内存
return 0;
}
```
运行上述代码,将会按照题目的要求输出"1000 nasgnahz"。
阅读全文