1樓:淺倚深微
#include
#define n 20
/*本題使用一個運算子棧st,
當遇到的([時
判斷棧頂是否為相應的括號,
若是退棧繼續執行;
否則演算法結束 */
char st[n];
int i = 0;
bool push(char x)
bool pop(char *p)
*p = st[i--];
return true;
}void main()
else
if(!pop(p))
if(*p==c)
continue;
else
c=getchar();
}if(flag)
printf("對稱\n");
else
printf("不對稱\n");
}完整的寫了遍
2樓:七月流光
可以先讀取棧頂元素,用if..else語句來判斷該括號的型別,從而找出應該匹配的括號型別,在讀入下一個元素的時候,判斷是否為應該匹配的型別。大概的**如下:
gettop(&st,&e);
if(e=='(')
ch=')';
else
if(e='[')
ch=']';
else
if(e=='';
else
printf("error!\n");
ch1=getelement();
if(ch==ch1)
push(&st,ch1);
else
printf("error");
3樓:
因為你這個題目是到所輸入符號跟棧頂元素不匹配時才結束的.
所以用順序棧有可能發生上溢現象,因此在這裡我用鏈式棧來解決這個問題**如下:
#include
#include
#define len sizeof(stack)typedef struct node
stack,*link;
link push(link s,char c); //進棧link pop(link s); //出棧int main ()
':case ')':
top=s->c; //取得棧頂跟c比較判斷棧頂元素是否與c相同
s=pop(s);
else
flag=0; //不想同則改變標誌flag的值break;
}if(!flag) //如果flag非真,則表示符號不匹配,顯示相關資訊並退出,否則繼續輸入
}return 0;
}link push(link s,char c)link pop(link s)
c語言版資料結構程式設計題
4樓:匿名使用者
//試編寫一道在單連結串列中資料域值為a的結點之後,//插入一個新結點的演算法.若原連結串列中無資料域值為a的結點,//則把新結點插入到表尾.設新結點資料域值為x.
小弟初學,謝謝大家啦//定義結點
typedef struct nodelnode ,*linklist;
//list為單連結串列的表頭指標,插入元素為插入x
//存在資料域值為a的結點
if(q->data==a)
//不存在資料域值為a的結點
else}
c語言程式設計 資料結構題
5樓:碧海風雲
#include
#include
#include
#define elemtype int /* 單連結串列元素資料型別 */
#define lnode_size sizeof (struct lnode) /* 單連結串列結點空間大小 */
#define status int /* 狀態型變數 */
#define overflow -1 /* 記憶體溢位狀態碼 */
#define error 0 /* 錯誤狀態碼 */
#define ok 1 /* 正確狀態碼 */
/* 單連結串列資料結構 */
typedef struct lnode lnode, *linklist;
/* 初始化 */
/* 操作結果:構造一個空的單連結串列l */
void initlist (linklist *l)
/* 銷燬 */
/* 初始條件:單連結串列l已存在。操作結果:銷燬單連結串列l */
void destroylist (linklist l)
free (l);
}/* 判斷單連結串列是否為空 */
/* 初始條件:單連結串列l已存在。操作結果:若l為空表,則返回true,否則返回false */
int listisempty (linklist l)
/* 尋找指定特徵(compare)元素的位序 */
/* 初始條件: 線性表l已存在,compare()是資料元素判定函式(滿足為1,否則為0) */
/* 操作結果: 返回l中第1個與e滿足關係compare()的資料元素的位序 */
/* 若這樣的資料元素不存在,則返回值為0 */
int locateelem (linklist l, elemtype e, status(*compare)(elemtype, elemtype))
return 0;
}/* 資料元素判定 */
/* 滿足為1,否則為0 */
int compare (elemtype des, elemtype src)
/* 單連結串列指定位置插入新元素 */
/* 操作結果:在帶頭結點的單連結串列l中第i個位置之前插入元素e */
status listinsertnode (linklist l, int i, elemtype e)
if (!p || j>i-1) /* 插入位置不合理:i小於1或者大於表長 */
return error;
/* 生成新結點,並插入l中 */
s = (linklist) malloc (lnode_size);
if(!s) /* 記憶體分配失敗 */
exit (overflow);
s->data = e;
s->next = p->next;
p->next = s;
return ok;
}/* 刪除單連結串列指定位置元素 */
/* 操作結果:在帶頭結點的單鏈線性表l中,刪除第i個元素,並由e返回其值 */
status listdeletenode (linklist l, int i, elemtype *e)
if (!p->next || j>i-1) /* 刪除位置不合理:i小於1或者大於表長 */
return error;
/* 刪除並釋放結點 */
q = p->next;
p->next = q->next;
*e = q->data;
free (q);
return ok;
}/* 列印連結串列內容 */
/* 初始條件:單連結串列l已存在。操作結果:當連結串列不為空時,列印連結串列內容並返回ok,否則返回error */
status printlist (linklist l)
while (p)
putchar ('\n');
return ok;
}int main (void)
6樓:匿名使用者
這是單連結串列最基礎的操作,包括建立,插入,刪除,遍歷,插入分頭插和尾插,刪除的時候要把刪掉節點的記憶體free掉。
C語言資料結構,C語言 資料結構
include include defineinfinity0 definemax vertex num10 最大頂點數 definemax edge num40 最大邊數typedefenumgraphkind typedefcharvertextype 頂點資料型別typedefstructar...
c語言的資料結構和程式設計,資料結構和C語言有什麼區別?
口框口 資料結構是資料及資料之間的關係,c語言只是一門程式語言,可以用 回c語言來寫程式,實現答資料按照某種特定的關係來組織和管理資料 也就是實現資料結構 所以資料結構的課程會有不同的語言版本,其實就是用不同的語言來實現資料結構了。呵呵,不知道你明白沒有呢 資料結構是c語言的更高層次的應用 示申僉 ...
資料結構c語言描述,資料結構(C語言描述)
include include include define datatype int define maxsize 1000 typedef struct nodebitreenode datatype bt maxsize bitreenode buildbtree datatype bt,in...