題目描寫敘述:輸入乙個鍊錶,從尾到頭列印鍊錶每乙個節點的值。
輸入:每乙個輸入檔案僅包括一組測試例子。
每一組測試案例包括多行,每行乙個大於0的整數,代表乙個鍊錶的節點。第一行是鍊錶第乙個節點的值,依次類推。
當輸入到-1時代表鍊錶輸入完成。-1本身不屬於鍊錶。
輸出:相應每乙個測試案例,以從尾到頭的順序輸出鍊錶每乙個節點的值。每乙個值佔一行。
例子輸入:
12345-1
例子輸出:
54321
解法一:
1.遍歷鍊錶,使用棧結構來儲存鍊錶元素。
2.鍊錶出棧即從尾到頭列印鍊錶。
**:
/********************************************
從尾到頭列印鍊錶
by rowandjj
2014/7/18
********************************************/
#include#includeusing namespace std;
typedef struct _node_//單鏈表結點定義
node,*pnode;
typedef struct _stack_//棧結構
stack,*pstack;
void initstack(pstack stack)
pnew->next = null;
stack->head = pnew;
stack->size = 0;
}void push(pstack stack,int data)
pnew->data = data;
pnew->next = stack->head->next;
stack->head->next = pnew;
stack->size++;
}int pop(pstack stack)
pnode pdel = stack->head->next;
stack->head->next = pdel->next;
int data = pdel->data;
free(pdel);
return data;
}void reverseprint(pnode phead)
pnode p = phead;
while(p != null)
int num = s.size;
for(int i =0; i < num; i++) }
int main()
pnode phead = (node*)malloc(sizeof(node));
if(!phead)
phead->data = data;
phead->next = null;
pnode p = phead;
while(scanf("%d",&data))
pnode ptemp = (node*)malloc(sizeof(node));
if(!ptemp)
ptemp->data = data;
ptemp->next = null;
p->next = ptemp;
p = ptemp;
} reverseprint(phead);
return 0;
}
解法2:
遞迴就是簡單啊。!
#include#includetypedef struct _node_
node,*pnode;
//遞迴 從後往前遍歷鍊錶
void reverse(pnode phead)
if(phead->next != null)
printf("%d\n",phead->data);
}int main()
phead = (pnode)malloc(sizeof(node));
if(!phead)
phead->data = data;
phead->next = null;
pnode p = phead;
while(scanf("%d",&data) != -1)
pnode pnew = (pnode)malloc(sizeof(node));
if(!pnew)
pnew->data = data;
pnew->next = null;
p->next = pnew;
p = pnew;
} reverse(phead);
//銷毀
pnode pt = phead,q;
while(pt)
return 0;
}
從尾到頭列印列表
輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。思路一 class solution 返回從尾部到頭部的列表值序列,例如 1,2,3 def printlistfromtailtohead self,listnode write code here arrlist while lis...
從尾到頭列印列表
輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist 這個題相對簡單,可以用遞迴的方法來做,以下列鍊錶為例,通過遞迴到鍊錶的尾巴 1的下乙個為null 開始返回,即到1時開始向arraylist中新增值,實現時只需將新增值的 放在遞迴語句之後即可。也可以先將鍊錶反轉然後再賦值給arrayli...
面試題6 從尾部到頭列印鍊錶
題目 輸入乙個鍊錶的頭結點,從尾部反過來列印出每個結點的值。c 實現 include includeusing namespace std struct listnode 從尾部列印乙個鍊錶 int printlistreversingly listnode phead while nodes.em...