當前位置:首頁 » 編程軟體 » 數據結構編程題

數據結構編程題

發布時間: 2022-09-10 08:58:06

❶ 數據結構編程

void quickpass(int r[], int s,int t)
{
int i=s, j=t, x=r[s];
while(i<j){
while (i<j &&r[j]>x) j=j-1; if (i<j) {r[i]=r[j];i=i+1;}
while (i<j && r[i]<x) i=i+1;if (i<j) {r[j]=r[i];j=j-1;}
}
r[i]=x;
}

❷ 數據結構 單鏈表 編程題

編程思路:從頭到尾讀出該鏈表數據並存入數組中,然後倒序輸出數組元素
源代碼:
void _visit(Link *l)
{
Link* rcv=l;
Link* rcv2=rcv;
int* a;
int lenth=0;
int i=0;
//獲得單鏈表長度
while(rcv)
{
lenth++;
rcv=rcv->next;
}
//為指針a分配lenth個空間
a=(int *)malloc(lenth*sizeof(int));
//將單鏈表的數據寫入a中
while(rcv2)
{
a[i]=rcv2->data;
rcv2=rcv2->next;
i++;
}
//倒序輸出
for(i=0;i<lenth;i++)
printf("%d\n",a[lenth-1-i]);
free(a);
}
運行結果截圖:這是一個函數,我測試過了,可行。既然不是一個可運行程序,我就不截圖了

❸ 《數據結構》編程題

給你個關於二叉樹的全的 你可以刪除不想用的
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define NULL 0
#define DataType char
typedef struct BinTreeNode *PBinTreeNode;
typedef PBinTreeNode *PBinTree;

struct BinTreeNode
{ DataType info;
PBinTreeNode llink;
PBinTreeNode rlink;
};
PBinTreeNode Create_BinTree(void);

PBinTree Create_BinTreeRoot(void)
{PBinTree pbtree;
pbtree=(PBinTree)malloc(sizeof(struct BinTreeNode));
if(pbtree==NULL) pbtree=(PBinTree)realloc(pbtree,sizeof(struct BinTreeNode));
*pbtree=Create_BinTree();
return (pbtree);
}

PBinTreeNode Create_BinTreeNode(void)
{PBinTreeNode pbnode;
pbnode=(PBinTreeNode)malloc(sizeof(struct BinTreeNode));
if(pbnode==NULL) pbnode=(PBinTreeNode)realloc(pbnode,sizeof(struct BinTreeNode));
else pbnode->llink=pbnode->rlink=(PBinTreeNode)NULL;
return (pbnode);
}

int isalphabet(char i)
{
if (i >= 'a' && i <='z' || i >= 'A' && i <='Z' || i=='@')
return 1;
else return 0;
}

PBinTreeNode Create_BinTree(void)
{PBinTreeNode pbnode ;
DataType i;
printf("Please input a char:\t");
fflush(stdin);
scanf("%c",&i);
fflush(stdin);
while(!isalphabet(i))
{
printf("Sorry, your input char is not in alphabet, please input again:");
scanf("%c",&i);
fflush(stdin);
}
if(i=='@') pbnode= NULL;
else
{
pbnode = (PBinTreeNode)malloc(sizeof(struct BinTreeNode));
if(pbnode == NULL)
{
printf("Out of space!\n");
return pbnode ;
}
pbnode->info=i;
pbnode->llink=Create_BinTree();
pbnode->rlink=Create_BinTree();
}
return pbnode;
}

void outputTree(PBinTreeNode pbnode,int totalSpace)
{int i;
if(pbnode!=NULL)
{
totalSpace+=5;
outputTree(pbnode->rlink,totalSpace);
for(i=0;i<totalSpace;i++) printf(" ");
printf("%c\n",pbnode->info);
outputTree(pbnode->llink,totalSpace);
}
}

void preOrder(PBinTreeNode pbnode)
{
if(pbnode==NULL) return ;
printf("%c\t",pbnode->info);
preOrder(pbnode->llink);
preOrder(pbnode->rlink);
}

void inOrder(PBinTreeNode pbnode)
{
if(pbnode== NULL) return;
inOrder(pbnode->llink);
printf("%c\t",pbnode->info);
inOrder(pbnode->rlink);
}

void postOrder(PBinTreeNode pbnode)
{
if(pbnode == NULL) return ;
postOrder(pbnode->llink);
postOrder(pbnode->rlink);
printf("%c\t", pbnode->info);
}
void leaves(PBinTreeNode pbnode)
{
if(pbnode->llink != NULL && pbnode->rlink == NULL)
leaves(pbnode->llink);
if(pbnode->rlink != NULL && pbnode->llink == NULL)
leaves(pbnode->rlink);
if(pbnode->llink != NULL && pbnode->rlink != NULL)
{
leaves(pbnode->llink);
leaves(pbnode->rlink);
}
if(pbnode->llink == NULL && pbnode->rlink == NULL)
{
printf("%c\t",pbnode->info);
return;
}
}
void freeAllNodes(PBinTreeNode pbnode)
{
if(pbnode->llink != NULL && pbnode->rlink == NULL)
freeAllNodes(pbnode->llink);
if(pbnode->rlink != NULL && pbnode->llink == NULL)
freeAllNodes(pbnode->rlink);
if(pbnode->llink != NULL && pbnode->rlink != NULL)
{
freeAllNodes(pbnode->llink);
freeAllNodes(pbnode->rlink);
}
if(pbnode->llink == NULL && pbnode->rlink == NULL)
{
free(pbnode->llink);
free(pbnode->rlink);
pbnode = NULL;
return ;
}
}

int main()
{PBinTree pbtree;
int i;
int totalSpace = 0;
printf("Please input char to the binatree,@ to exit current node:\n");
pbtree = Create_BinTreeRoot();
printf("Display the binatree data directly:\n");
outputTree(*pbtree,totalSpace);
printf("Please choose the mode you want to operate with the binatree:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
while(i>6 || i<0)
{
printf("\nYou choice is illegal please input again:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
}
while(i!=0)
{
while(i > 6 || i<0)
{
printf("\nYou choice is illegal please input again:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
}
while(i !=0)
{
while(i > 6 || i<0)
{
printf("\nYou choice is illegal please input again:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
}
while(i !=6)
{
while(i > 6 || i<0)
{
printf("\nYou choice is illegal please input again:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
}
switch(i)
{
case 0 :
printf("\nDealing with the last job, to free all nodes...\n");
freeAllNodes(*pbtree);
printf("All node have been freed successfully\n");
exit(1);
getch();
case 1 :
printf("\nDisplay binatree:\n");
outputTree(*pbtree,totalSpace);
break;
case 2 :
printf("\nData in preOrder:\n");
preOrder(*pbtree);
printf("\n\n");
break;
case 3 :
printf("\nData in inOrder:\n");
inOrder(*pbtree);
printf("\n\n");
break;
case 4 :
printf("\nData in postOrder:\n");
postOrder(*pbtree);
printf("\n\n");
break;
case 5:
printf("\nLeaves:\n");
leaves(*pbtree);
printf("\n\n");
}
printf("Please choose the mode you want to operate with the binatree:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
}
if(i==6)
{
printf("\nFree all nodes:\n");
freeAllNodes(*pbtree);
printf("All node have been freed successfully.");
}
printf("\n\nNow creating a new binatree...\n");
printf("Please input char to the binatree,@ to exit current node:\n");
pbtree = Create_BinTreeRoot();
printf("Display the binatree data directly:\n");
outputTree(*pbtree,totalSpace);
printf("Please choose the mode you want to operate with the binatree:\n");
printf("1.display 2.preOrder 3.inOrder 4.postOrder 5.leaves 6.free nodes 0 to exit:");
scanf("%d",&i);
}
}
printf("\nDealing with the last job, to free all nodes\n");
freeAllNodes(*pbtree);
printf("All node have been freed successfully\n");
getch();
return 0;
}

c語言編程 數據結構題

棧先進後出,隊列先進先出,隊列的順序等價於棧的出棧順序。寫了個簡單的驗證程序,初始的出棧順序必須無誤

#include<iostream>
usingstd::cout;

//iStack元素值有序,簡化了編程,否則就要藉助於下標的有序性
//'g'作為一個額外的標記,取到此值時,表示所有元素都已入棧
chariStack[]={'a','b','c','d','e','f','g'};
charoStack[]={'b','d','f','e','c','a'};

intno=1;

//sp用於指示iStack未入棧的元素
intsp=0;

charTop()
{
returniStack[sp];
}

//ch及之前元素入棧
voidPush(charch)
{
charcc=Top();
while(cc<=ch)
{
printf("(%2d)Push: %c ",no++,cc);
sp++;
cc=Top();
}
}

voidPop(charch)
{
if(ch>=Top()) //當前要出棧的元素未入棧
Push(ch);

printf("(%2d)Pop: %c ",no++,ch);
}

intmain()
{
intcount=0;
intlen=sizeof(oStack);

//1
printf("入棧順序: ");
for(inti=0;i<len;i++)
printf("%c",iStack[i]);
printf(" ");

//2
printf("出棧順序: ");
for(inti=0;i<len;i++)
printf("%c",oStack[i]);
printf(" ");

//3
printf("出入棧操作: ");
while(count<len)
{
Pop(oStack[count]);
count++;
}

return0;

}

❺ c語言數據結構編程題,生成隨機數

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void bubbleSort(int arr[],int len){ int temp,i,j;
for(i=0;i<len-1;i++)
for(j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1];{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=arr[j+1];
arr[j+1]=temp;
}
}
}
int main(int argc,char *argv[]) { int i,a[100];
srand((unsigned int)time(NULL));
for(i=0;i<100;i++){ a[i]=rand()%1000; printf("%d\t",a[i]); }
bubbleSort(a,100);
for ( i=0;i<100;i++ ) printf("%d ",a[i]); printf("\n");
return 0;
}

❻ 數據結構編程題,使用java描述

publicclassBookList{

publicfinalstaticintSIZE=100;

privateBook[]data;
privateintlength;

publicBookList(){
data=newBook[SIZE];
length=0;
}

publicvoidCreateList(intn){
//看不懂要求==
for(inti=0;i<n;i++){
data[i]=newBook();
data[i].setId(i);
}
length=n;
}

publicintSearch(intid){
intlow=0;
inthigh=length;
while(low<=high){
intmiddle=low+((high-low)>>>1);
if(id==data[middle].getId()){
returnmiddle;
}elseif(id<data[middle].getId()){
high=middle-1;
}else{
low=middle+1;
}
}
return-1;
}

classBook{
privateintid;
privateStringname;
privatefloatprice;

publicBook(){
}

publicBook(intid,Stringname,floatprice){
this.id=id;
this.name=name;
this.price=price;
}

publicintgetId(){
returnid;
}

publicvoidsetId(intid){
this.id=id;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicfloatgetPrice(){
returnprice;
}

publicvoidsetPrice(floatprice){
this.price=price;
}
}
}

❼ 3道數據結構編程題~~~

我只給你下思路,
1.你意思就是元素是按升序排的,可以先一個變數得到你順序表的首地址,之後一直和你要插入的元素比較大小,找到適當的位置後,就可插入
(1)
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100//表初始大小
typedef struct
{
int *elem;
int length;
}SqList; //順序表的結構

int main()
{
int i,j,k;
SqList sheet; //這里為了簡便直接賦值
sheet.elem = (int*)malloc(LIST_INIT_SIZE*sizeof(int));
sheet.elem[0] = 1;//賦值
sheet.elem[1] = 2;
sheet.elem[2] = 4;
sheet.length = 3;
//如現在要插入一個3的元素
i = 3;
for(j=0;j<sheet.length;++j)
if(sheet.elem[j]>=i)
break; //找到了便退出
for(k=sheet.length-1;k>=j;--k) //將元素向後移一位
{
sheet.elem[k+1] = sheet.elem[k];
}
sheet.elem[j] = i; //插入元素
for(k=0;k<4;++k)
printf("%d ",sheet.elem[k]);
return 0;
}

(2)這里是寫個大概,具體要自己修改
#include<stdio.h>
#include<stdlib.h>

typedef struct LNode //單鏈結構
{
int elem;
struct LNode *next;
}LinkList;

int main()
{
int i;
LinkList *link,*link2,*link3,*temp,*temp2,*temp3;//為簡便這也直接賦值
link = (LinkList*)malloc(sizeof(LinkList));
link2 = (LinkList*)malloc(sizeof(LinkList));
link3 = (LinkList*)malloc(sizeof(LinkList));

link->elem = 1; //鏈接起來
link->next = link2;
link2->elem = 2;
link2->next = link3;
link3->elem = 3;
link3->next = NULL;

//倒置
temp = link;
temp2 = link2;
temp3 = link3;
temp->next = NULL;

//這部分可放到循環中
while(1)
{
temp2->next = temp; //改變各結點的指向
temp = temp2;
if(temp3==NULL) break; //若這里temp3為空則要退出,具體為什麼自己想想
temp2 = temp3;
temp3 = temp3->next;
}

for(i=0;i<3;++i)
{
printf("%d ",temp2->elem);
temp2 = temp2->next;
}

return 0;
}

第三題其實也差不多,時間關系我不能再寫了,具體請你多看數據結構這本書,上面都有詳細說明的。

❽ 一道數據結構的編程題目,希望大大們給小弟解答下,謝謝哈

1.cpp,Func2-2.cpp,
Main2-1.cpp 它們分別單獨存為文件,然後把他們放在一個文件夾中,最後雙擊Main2-1.cpp。

// c1.h (文件名)
#include<string.h> // 字元串函數頭文件
#include<ctype.h> // 字元函數頭文件
#include<malloc.h> // malloc()等
#include<limits.h> // INT_MAX等
#include<stdio.h> // 標准輸入輸出頭文件,包括EOF(=^Z或F6),NULL等
#include<stdlib.h> // atoi(),exit()
#include<io.h> // eof()
#include<math.h> // 數學函數頭文件,包括floor(),ceil(),abs()等
#include<sys/timeb.h> // ftime()
#include<stdarg.h> // 提供宏va_start,va_arg和va_end,用於存取變長參數表
// 函數結果狀態代碼。
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
// #define INFEASIBLE -1 沒使用
// #define OVERFLOW -2 因為在math.h中已定義OVERFLOW的值為3,故去掉此行
typedef int Status; // Status是函數的類型,其值是函數結果狀態代碼,如OK等
typedef int Boolean; // Boolean是布爾類型,其值是TRUE或FALSE,

// c2-1.h 線性表的動態分配順序存儲結構。
#define LIST_INIT_SIZE 10 // 線性表存儲空間的初始分配量
#define LIST_INCREMENT 2 // 線性表存儲空間的分配增量
struct SqList
{ ElemType *elem; // 存儲空間基址
int length; // 當前長度
int listsize; // 當前分配的存儲容量(以sizeof(ElemType)為單位)
};

// bo2-1.cpp 順序存儲的線性表(存儲結構由c2-1.h定義)的基本操作(12個),包括演算法2.3~2.6
void InitList(SqList &L) // 演算法2.3
{ // 操作結果:構造一個空的順序線性表L
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) // 存儲分配失敗
exit(OVERFLOW);
L.length=0; // 空表長度為0
L.listsize=LIST_INIT_SIZE; // 初始存儲容量
}

void DestroyList(SqList &L)
{ // 初始條件:順序線性表L已存在。操作結果:銷毀順序線性表L
free(L.elem); // 釋放L.elem所指的存儲空間
L.elem=NULL; // L.elem不再指向任何存儲單元
L.length=0;
L.listsize=0;
}

void ClearList(SqList &L)
{ // 初始條件:順序線性表L已存在。操作結果:將L重置為空表
L.length=0;
}

Status ListEmpty(SqList L)
{ // 初始條件:順序線性表L已存在。
// 操作結果:若L為空表,則返回TRUE;否則返回FALSE
if(L.length==0)
return TRUE;
else
return FALSE;
}

int ListLength(SqList L)
{ // 初始條件:順序線性表L已存在。操作結果:返回L中數據元素的個數
return L.length;
}

Status GetElem(SqList L,int i,ElemType &e)
{ // 初始條件:順序線性表L已存在,1≤i≤ListLength(L)
// 操作結果:用e返回L中第i個數據元素的值
if(i<1||i>L.length) // i不在表L的范圍之內
return ERROR;
e=*(L.elem+i-1); // 將表L的第i個元素的值賦給e
return OK;
}

int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType))
{ // 初始條件:順序線性表L已存在,compare()是數據元素判定函數(滿足為1,否則為0)
// 操作結果:返回L中第1個與e滿足關系compare()的數據元素的位序。
// 若這樣的數據元素不存在,則返回值為0。演算法2.6
int i=1; // i的初值為第1個元素的位序
ElemType *p=L.elem; // p的初值為第1個元素的存儲位置
while(i<=L.length&&!compare(*p++,e)) // i未超出表的范圍且未找到滿足關系的數據元素
++i; // 繼續向後找
if(i<=L.length) // 找到滿足關系的數據元素
return i; // 返回其位序
else // 未找到滿足關系的數據元素
return 0;
}

Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e)
{ // 初始條件:順序線性表L已存在
// 操作結果:若cur_e是L的數據元素,且不是第一個,則用pre_e返回它的前驅;
// 否則操作失敗,pre_e無定義
int i=2; // 從第2個元素開始
ElemType *p=L.elem+1; // p指向第2個元素
while(i<=L.length&&*p!=cur_e) // i未超出表的范圍且未找到值為cur_e的元素
{ p++; // p指向下一個元素
i++; // 計數加1
}
if(i>L.length) // 到表結束處還未找到值為cur_e的元素
return ERROR; // 操作失敗
else // 找到值為cur_e的元素,並由p指向其
{ pre_e=*--p; // p指向前一個元素(cur_e的前驅),將所指元素的值賦給pre_e
return OK; // 操作成功
}
}

Status NextElem(SqList L,ElemType cur_e,ElemType &next_e)
{ // 初始條件:順序線性表L已存在
// 操作結果:若cur_e是L的數據元素,且不是最後一個,則用next_e返回它的後繼,
// 否則操作失敗,next_e無定義
int i=1; // 從第1個元素開始
ElemType *p=L.elem; // p指向第1個元素
while(i<L.length&&*p!=cur_e) // i未到表尾且未找到值為cur_e的元素
{ p++; // p指向下一個元素
i++; // 計數加1
}
if(i==L.length) // 到表尾的前一個元素還未找到值為cur_e的元素
return ERROR; // 操作失敗
else // 找到值為cur_e的元素,並由p指向其
{ next_e=*++p; // p指向下一個元素(cur_e的後繼),將所指元素的值賦給next _e
return OK; // 操作成功
}
}

Status ListInsert(SqList &L,int i,ElemType e) // 演算法2.4
{ // 初始條件:順序線性表L已存在,1≤i≤ListLength(L)+1
// 操作結果:在L中第i個位置之前插入新的數據元素e,L的長度加1
ElemType *newbase,*q,*p;
if(i<1||i>L.length+1) // i值不合法
return ERROR;
if(L.length==L.listsize) // 當前存儲空間已滿,增加分配,修改
{ newbase=(ElemType*)realloc(L.elem,(L.listsize+LIST_INCREMENT)*sizeof(ElemType));
if(!newbase) // 存儲分配失敗
exit(OVERFLOW);
L.elem=newbase; // 新基址賦給L.elem
L.listsize+=LIST_INCREMENT; // 增加存儲容量
}
q=L.elem+i-1; // q為插入位置
for(p=L.elem+L.length-1;p>=q;--p) // 插入位置及之後的元素右移(由表尾元素開始移)
*(p+1)=*p;
*q=e; // 插入e
++L.length; // 表長增1
return OK;
}

Status ListDelete(SqList &L,int i,ElemType &e) // 演算法2.5
{ // 初始條件:順序線性表L已存在,1≤i≤ListLength(L)
// 操作結果:刪除L的第i個數據元素,並用e返回其值,L的長度減1
ElemType *p,*q;
if(i<1||i>L.length) // i值不合法
return ERROR;
p=L.elem+i-1; // p為被刪除元素的位置
e=*p; // 被刪除元素的值賦給e
q=L.elem+L.length-1; // q為表尾元素的位置
for(++p;p<=q;++p) // 被刪除元素之後的元素左移(由被刪除元素的後繼元素開始移)
*(p-1)=*p;
L.length--; // 表長減1
return OK;
}

void ListTraverse(SqList L,void(*visit)(ElemType&))
{ // 初始條件:順序線性表L已存在
// 操作結果:依次對L的每個數據元素調用函數visit()
// visit()的形參加'&',表明可通過調用visit()改變元素的值
ElemType *p=L.elem; // p指向第1個元素
int i;
for(i=1;i<=L.length;i++) // 從表L的第1個元素到最後1個元素
visit(*p++); // 對每個數據元素調用visit()
printf("\n");
}

// func2-2.cpp 幾個常用的函數
Status equal(ElemType c1,ElemType c2)
{ // 判斷是否相等的函數
if(c1==c2)
return TRUE;
else
return FALSE;
}

int comp(ElemType a,ElemType b)
{ // 根據a<、=或>b,分別返回-1、0或1
if(a==b)
return 0;
else
return (a-b)/abs(a-b);
}

void print(ElemType c)
{ // 以十進制整型的格式輸出元素的值
printf("%d ",c);
}

void print1(ElemType &c)
{ // 以十進制整型的格式輸出元素的值(設c為引用類型)
printf("%d ",c);
}

void print2(ElemType c)
{ // 以字元型的格式輸出元素的值
printf("%c ",c);
}

// main2-1.cpp 檢驗bo2-1.cpp的主程序
#include"c1.h"
typedef int ElemType; // 定義ElemType為整型
#include"c2-1.h" // 線性表的順序存儲結構
#include"bo2-1.cpp" // 線性表順序存儲結構的基本操作
#include"func2-2.cpp" // 包括equal()、comp()、print()、print1()和print2()函數

Status sq(ElemType c1,ElemType c2)
{ // 數據元素判定函數(平方關系),LocateElem()調用的函數
if(c1==c2*c2)
return TRUE;
else
return FALSE;
}

void dbl(ElemType &c)
{ // ListTraverse()調用的另一函數(元素值加倍)
c*=2;
}

void main()
{
SqList L;
ElemType e,e0;
Status i;
int j,k;
InitList(L); // 初始化線性表L
printf("初始化L後,L.length=%d,L.listsize=%d,L.elem=%u\n",L.length,
L.listsize,L.elem);
for(j=1;j<=5;j++)
i=ListInsert(L,1,j); // 在L的表頭插入j
printf("在L的表頭依次插入1~5後,*L.elem=");
for(j=1;j<=5;j++)
printf("%d ",*(L.elem+j-1)); // 依次輸出表L中的元素
printf("\n調用ListTraverse()函數,依次輸出表L中的元素:");
ListTraverse(L,print1); // 依次對表L中的元素調用print1()函數(輸出元素的值)
i=ListEmpty(L); // 檢測表L是否空
printf("L.length=%d(改變),L.listsize=%d(不變),",L.length,L.listsize);
printf("L.elem=%u(不變),L是否空?i=%d(1:是 0:否)\n",L.elem,i);
ClearList(L); // 清空表L
i=ListEmpty(L); // 再次檢測表L是否空
printf("清空L後,L.length=%d,L.listsize=%d,",L.length,L.listsize);
printf("L.elem=%u,L是否空?i=%d(1:是 0:否)\n",L.elem,i);
for(j=1;j<=10;j++)
ListInsert(L,j,j); // 在L的表尾插入j
printf("在L的表尾依次插入1~10後,L=");
ListTraverse(L,print1); // 依次輸出表L中的元素
printf("L.length=%d,L.listsize=%d,L.elem=%u\n",L.length,L.listsize,L.elem);
ListInsert(L,1,0); // 在L的表頭插入0,增加存儲空間
printf("在L的表頭插入0後,L.length=%d(改變),L.listsize=%d(改變),"
"L.elem=%u(有可能改變)\n",L.length,L.listsize,L.elem);
GetElem(L,5,e); // 將表L中的第5個元素的值賦給e
printf("第5個元素的值為%d\n",e);
for(j=10;j<=11;j++)
{ k=LocateElem(L,j,equal); // 查找表L中與j相等的元素,並將其位序賦給k
if(k) // k不為0,表明有符合條件的元素
printf("第%d個元素的值為%d,",k,j);
else // k為0,沒有符合條件的元素
printf("沒有值為%d的元素\n",j);
}
for(j=3;j<=4;j++) // 測試2個數據
{ k=LocateElem(L,j,sq); // 查找表L中與j的平方相等的元素,並將其位序賦給k
if(k) // k不為0,表明有符合條件的元素
printf("第%d個元素的值為%d的平方,",k,j);
else // k為0,沒有符合條件的元素
printf("沒有值為%d的平方的元素\n",j);
}
for(j=1;j<=2;j++) // 測試頭2個數據
{ GetElem(L,j,e0); // 將表L中的第j個元素的值賦給e0
i=PriorElem(L,e0,e); // 求e0的前驅,如成功,將值賦給e
if(i==ERROR) // 操作失敗
printf("元素%d無前驅,",e0);
else // 操作成功
printf("元素%d的前驅為%d\n",e0,e);
}
for(j=ListLength(L)-1;j<=ListLength(L);j++) // 最後2個數據
{ GetElem(L,j,e0); // 將表L中的第j個元素的值賦給e0
i=NextElem(L,e0,e); // 求e0的後繼,如成功,將值賦給e
if(i==ERROR) // 操作失敗
printf("元素%d無後繼\n",e0);
else // 操作成功
printf("元素%d的後繼為%d,",e0,e);
}
k=ListLength(L); // k為表長
for(j=k+1;j>=k;j--)
{ i=ListDelete(L,j,e); // 刪除第j個數據
if(i==ERROR) // 表中不存在第j個數據
printf("刪除第%d個元素失敗。",j);
else // 表中存在第j個數據,刪除成功,其值賦給e
printf("刪除第%d個元素成功,其值為%d",j,e);
}
ListTraverse(L,dbl); // 依次對元素調用dbl(),元素值乘2
printf("L的元素值加倍後,L=");
ListTraverse(L,print1); // 依次輸出表L中的元素
DestroyList(L); // 銷毀表L
printf("銷毀L後,L.length=%d,L.listsize=%d,L.elem=%u\n",L.length,
L.listsize,L.elem);
}

❾ 數據結構(用C語言描述)編程題求助!!!

這是個二叉排序樹例題,希望對你有幫助! #include "stdio.h" # include "stdlib.h" struct Bnode {int data; struct Bnode *lchild,*rchild; }; void insertbst(Bnode *&t, Bnode *s) {if (t== NULL) t=s; else if (s->data< t->data) insertbst(t-> lchild,s); else insertbst(t-> rchild,s); } void inorder(Bnode *t) { if (t!=NULL) { inorder(t->lchild); printf("%d ", t->data); inorder(t->rchild); } } void main() {int i,x; Bnode *t=NULL,*s; for (i=1;i<=4;i++) {scanf("%d",&x); s=( Bnode *)malloc(sizeof(Bnode)); s->data=x; s-> lchild= NULL; s-> rchild= NULL; printf("\n"); insertbst(t,s); } inorder( t); printf("\n"); }

熱點內容
中國大學mooc密碼要求是什麼 發布:2024-11-01 18:33:45 瀏覽:816
jrtplib編譯 發布:2024-11-01 18:06:01 瀏覽:226
java代碼中if 發布:2024-11-01 18:02:40 瀏覽:377
android定時刷新 發布:2024-11-01 17:59:43 瀏覽:999
炎黃解說我的世界伺服器生存 發布:2024-11-01 17:59:42 瀏覽:542
如何清楚網頁緩存 發布:2024-11-01 17:53:58 瀏覽:552
linux文件許可權不夠 發布:2024-11-01 17:53:19 瀏覽:917
c語言中10是什麼意思 發布:2024-11-01 17:45:08 瀏覽:892
裝棉衣壓縮袋 發布:2024-11-01 17:37:18 瀏覽:297
android40ble藍牙 發布:2024-11-01 17:36:58 瀏覽:712