创建字符型单链表设计一个函数算法设计CreateListS(LinkNode *&L,char a[],int n),在创建单链表过程中,将新的节点有序插入链表,创建单链表后,调用DispList(L)输出
时间: 2024-03-27 09:34:51 浏览: 65
好的,我明白了。下面是CreateListS函数的算法设计:
1. 初始化单链表的头节点L,并将其指向NULL。
2. 对于每个字符a[i],创建一个新的节点p,并将a[i]赋值给p->data。
3. 找到p在单链表中的正确位置,使得链表保持有序,即p的前面节点的data值小于等于p->data,p的后面节点的data值大于p->data。
4. 将p插入到单链表中,使得链表保持有序。
5. 重复步骤2~4,直到所有字符都被插入到单链表中。
下面是CreateListS函数的完整代码实现:
```
void CreateListS(LinkNode *&L, char a[], int n) {
for (int i = 0; i < n; i++) {
LinkNode *p = new LinkNode;
p->data = a[i];
p->next = NULL;
if (L == NULL || a[i] < L->data) {
p->next = L;
L = p;
} else {
LinkNode *pre = L;
LinkNode *cur = L->next;
while (cur != NULL && cur->data < a[i]) {
pre = cur;
cur = cur->next;
}
pre->next = p;
p->next = cur;
}
}
DispList(L);
}
```
其中,DispList函数用于输出单链表的所有节点,代码如下:
```
void DispList(LinkNode *L) {
LinkNode *p = L;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
```
使用示例:
```
int main() {
LinkNode *L = NULL;
char a[] = {'b', 'd', 'a', 'e', 'c'};
CreateListS(L, a, 5);
return 0;
}
```
输出结果为:
```
a b c d e
```
阅读全文