重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
最簡單的反序輸出,就是把數組反序輸出。只需要從最大下標開始,向0下標循環輸出就可以了。
創新互聯建站是一家專業提供陽東企業網站建設,專注與成都網站設計、做網站、成都外貿網站建設公司、H5頁面制作、小程序制作等業務。10年已為陽東眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。
比如將字符串(字符數組)反序輸出的代碼如下:
void?reverse_output_str(char?*str)
{
int?len?=?strlen(str)?-1;//得到最大下標
while(len?=?0)printf("%c",?str[len--]);?//反序輸出直到str[0]
}
其它類的反序輸出,也都可以歸結為類似的情況。先把要輸出的正序輸出到一個數組,然后把這個數組反序輸出。
比如把一個10進制數反序輸出,即輸入1234,輸出4321,就可以采用類似的方式:
void?reverse_int_output(int?a)
{
char?buf[20];
sprintf(buf,?"%d",?a);//將a轉為字符串
reverse_output_str(buf);//調用剛才的函數反序輸出。
}
static?int?reverse2(int?num,?int?t)
{
if?(num?!=?0)
return?reverse2(num?/?10,?t?*?10?+?num?%?10);
else
return?t;
}
int?reverse(int?num)
{
if?(num??0)
return?-reverse2(-num,?0);
else
return?reverse2(num,?0);
}
#include?stdio.h
int?main()
{
int?n;
for(;;)?{
scanf("%d",?n);
if(n?==?0)?break;
printf("%d\n",?reverse(n));
}
return?0;
}
扣著的是頭節點(頭子)
車是首節點(首子)
馬是次節點(次子)
牙簽細的是指針指向,香頭發黑的是指向,鐵頭細的是指向。
根據步驟寫程序的偽算法(3步4循環,7張圖片搞定),如下:
以下是while循環(條件:香頭指向不為空)
第一個循環把馬弄到車前面,
第二個循環把相弄到馬前面
第三個循環把士弄到相前面
........
直到香指向為空后停止循環。
代碼如下:只需要一個首結點pHead,就能把鏈表找到,并倒置。具體代碼如下
p香=pHead-pNext;
p鐵=p香-pNext;
p香-pNext=NULL;
P香=p鐵
while(p香 !=NULL)
{
p鐵=p香-pNext;
p香-pNext=pHead-pNext;
pHead-pNext=p香;
p香=p鐵;
}
對照偽算法(三步四循環),和上面的代碼是一一對應的:
第一步:香頭指向首子,鐵頭指向次子
第二步:刪掉首子指向次子(鐵頭所指向的那個子)的牙簽
第三步:香頭跟著鐵頭
以下循環條件:(條件:香頭指向不為空)
{
循環1:鐵頭移動到香頭的下一個指向
循環2:香頭的下一個指向首子
循環3:頭子的下一個跟著香頭
循環4:香頭跟著鐵頭
}
自己用道具操作幾遍,然后把流程背會,以后自己根據流程寫代碼即可。
反序方法見 下面 函數 void op(char *s). 主函數是調用的例子。
#include stdio.h
void op(char *s){
int i,k;
char c;
k = strlen(s);
for (i=0;ik/2;i++){c=s[i];s[i]=s[k-i-1];s[k-i-1]=c;};
};
int main()
{
char s[200];
printf("input one line string:\n");
gets(s);
op(s);
printf("%s\n",s);
return 0;
}
輸入:abc123
輸出:321cba