从键盘输入输入n个整数,建立正序带表头结点的单链表?计算机软件技术基础,写算法
正序,带头结点链表采用尾插法。
一个尾指针rear永远指向链表最后一个结点,每次新来的结点就插入到rear后面。
//构建结点结构体
typedef struct Node {
int data;
Node* next;
}*nodeList;
void InitLinkList(nodeList &L) {
//初始化链表,建立头结点
L= new Node();
L->next = NULL;
}
bool CreateLinkList(nodeList &L) {
int n;
cin >> n;//scanf("%d",n);C语言用这个
//进行尾插法
if (n <= 0)
return false;
Node*rear = L;//尾指针,指向链表的尾部
for (int i = 0; i < n; i++) {
Node* p = new Node();
cin >> p->data;//scanf("%d",p->data);C语言用这个
rear->next = p;
rear = p;
}
rear->next = NULL;
return true;
}
void printfList(nodeList &L) {
//用来打印链表,验证是否为正序
Node*p = L->next;
while (p) {
cout << p->data << " ";//printf("%d ",p->data);C语言用这个
p = p->next;
}
cout << endl;//printf("\n");C语言用这个
}
int main() {
Node*L = NULL;
InitLinkList(L);
CreateLinkList(L);
printfList(L);
}