標籤:end sizeof 元素 else lib next return void 儲存空間
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef char ElemType;
typedef struct LNode{
ElemType data; //資料域
struct LNode *next; //指標域
}LNode, *SLink;
void InitList(SLink &L){
SLink p, r;
int n, j;
cout << "請輸入單鏈表元素個數:";
cin >> n;
//建立一個帶前端節點的空鏈表,L為指向前端節點的指標(頭指標)
L = (SLink) malloc (sizeof(LNode));
r = L;
if(!L) exit(0); //儲存空間分配失敗
cout << "請輸入單鏈表的元素:";
for(j = 0; j < n; j++)
{
p = (SLink) malloc (sizeof(LNode)); //產生新節點
cin >> p->data; //輸入元素值
r->next = p; r = p; //插入到表頭
}
r->next = NULL;
}//InitList
int main()
{
SLink B, D, L, p, q, rb, rd, rl;
InitList(L);
B = new LNode; B->next = B; //建立空迴圈鏈表存放字母
D = new LNode; D->next = D; //建立空迴圈鏈表存放數字
rb = B; rd = D; rl = L;
p = L; q = p->next;
while(q)
{
if((‘A‘ <= q->data) && (q->data <= ‘Z‘) || (‘a‘ <= q->data) && (q->data <= ‘z‘))
{
p->next = q->next; B->next = q; q->next = B; B = q; //尾插法
}
else if((‘0‘ <= q->data) && (q->data <= ‘9‘))
{
p->next = q->next; D->next = q; q->next = D; D = q;
}
else p = q;
q = p->next;
}
p->next = L; //將鏈表L構造為迴圈鏈表,儲存其他字元
while(rb->next != B)
{
rb = rb->next;
cout << rb->data << ‘ ‘;
}
cout << B->data << endl;
while(rd->next != D)
{
rd = rd->next;
cout << rd->data << ‘ ‘;
}
cout << D->data <<endl;
while(rl->next != L)
{
rl = rl->next;
cout << rl->data << ‘ ‘;
}
cout << endl;
return 0;
}
資料結構之約瑟夫問題(迴圈鏈表)(C++版)