資料結構之約瑟夫問題(迴圈鏈表)(C++版)

來源:互聯網
上載者:User

標籤: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++版)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.