當前位置:首頁 » 服務存儲 » 給定一串數字用鏈表結構進行存儲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

給定一串數字用鏈表結構進行存儲

發布時間: 2023-06-14 22:41:37

1. 鍵盤輸入一組數字,用單鏈表形式存儲,輸入完成後分別按順序和逆序輸出所輸入數字。

樓主你好
具體代碼如下:
#include<stdio.h>
#include<stdlib.h>
#define MAX 80

typedef struct node
{
int data;
struct node *next;
}N;

N *head=(N *)malloc(sizeof(N));//創建頭結點

void Creat()
{
N *p;//用於插入新節點
N *r=head;//尾指針 開始指向頭結點

printf("請輸入任意個數據(用回車結束輸入、空格間隔:1 2 3……)\n:");
do{
p=(N *)malloc(sizeof(N));
scanf("%d",&p->data);
r->next=p;
r=p;
}while(getchar()!='\n');

r->next=NULL;
}

void Disp()//實現順序輸出和逆序輸出
{
N *p=head->next;//用於遍歷單鏈表
int a[MAX];
int i=0,j;

printf("順序輸出:\n");
while(p)
{
printf("%d ",p->data);
a[i]=p->data;
p=p->next;
i++;
}
printf("\n逆序輸出:\n");
for(j=i-1;j>=0;j--)
printf("%d ",a[j]);
printf("\n");
}
void main()
{
Creat();
Disp();
}

希望能幫助你哈

2. 用鏈表的形式存儲一個字元串 按正序和逆序輸出字元串(數據結構考試)

這個字元串的輸出,考慮到有正序和逆序,採用鏈表,可以考慮用雙鏈表。這樣輸出效率會比較高。

建議用循環雙鏈表(帶頭結點),方便程序處理,簡化操作流程,步驟明晰,便於調試。

關鍵函數可分為:

1,結構的定義

2,初始化鏈表

3,輸出(正序,逆序)

4,釋放鏈表

5,主函數

以下C語言代碼在VC6.0中編譯通過:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<malloc.h>

#include<string.h>

/*定義*/

typedefstructnode

{

charc;

structnode*llink,*rlink;

}stud;

/*建立鏈表*/

stud*creat(void)

{

stud*p,*h,*s;

chara;

if((h=(stud*)malloc(sizeof(stud)))==NULL)

{

printf("不能分配內存空間!");

exit(0);

}

h->c=0;

h->llink=NULL;

h->rlink=NULL;

p=h;

while(1)

{

a=getchar();

if(a==' ')

break;

if((s=(stud*)malloc(sizeof(stud)))==NULL)

{

printf("不能分配內存空間!");

exit(0);

}

p->rlink=s;

s->c=a;

s->llink=p;

s->rlink=NULL;

p=s;

}

h->llink=s;

p->rlink=h;

return(h);

}

/*正序*/

voidprint1(stud*h)

{

stud*p;

p=h->rlink;

printf("字元串(正序):");

while(p!=h)

{

printf("%c",p->c);

p=p->rlink;

}

printf(" ");

}

/*逆序*/

voidprint2(stud*h)

{

stud*p;

p=h->llink;

printf("字元串(逆序):");

while(p!=h)

{

printf("%c",p->c);

p=p->llink;

}

printf(" ");

}

/*釋放*/

voidfree_stud(stud*h)

{

stud*p,*q;

p=h->llink;

while(p!=h)

{

q=p;

p=p->llink;

free(q);

}

free(h);

}

/*主函數*/

intmain()

{

stud*head=NULL;

head=creat();

print1(head);

print2(head);

free_stud(head);

return0;

}